xCode 中的 OpenCV 错误:输入参数的大小不匹配

Posted

技术标签:

【中文标题】xCode 中的 OpenCV 错误:输入参数的大小不匹配【英文标题】:OpenCV Error in xCode: Sizes of input arguments do not match 【发布时间】:2017-05-27 13:35:37 【问题描述】:

我正在尝试将晕影应用于图片,但由于某种原因我收到错误

OpenCV 错误:输入参数的大小不匹配(操作既不是“数组运算数组”(其中数组具有相同的大小和相同的通道数)

+(UIImage *)vignetteImage:(UIImage *)image 
Mat inputImage;
UIImageToMat(image, inputImage);

Mat kernelX = getGaussianKernel(inputImage.cols, 50);
Mat kernelY = getGaussianKernel(inputImage.rows, 50);
Mat kernelXTranspose;
transpose(kernelX, kernelXTranspose);
Mat kernel = kernelY * kernelXTranspose;

Mat mask, processedImage;
normalize(kernel, mask, 0, 1, NORM_MINMAX);
inputImage.convertTo(processedImage, CV_64F);
multiply(mask, processedImage, processedImage);
convertScaleAbs(processedImage, processedImage);

return MatToUIImage(processedImage);

抛出的线是

乘法(掩码,已处理图像,已处理图像);

我不明白,因为我正在拍摄相同的图像并将蒙版应用于自身。那么数组应该匹配吗?

【问题讨论】:

【参考方案1】:

我发现错误-我需要先将图像转换为灰度,否则数组Mat内核与我要转换的图像的大小不同:

+(UIImage *)vignetteImage:(UIImage *)image 
Mat inputImage;
UIImageToMat(image, inputImage);

// Transform the cv::Mat color image to grayscale
Mat grayMat;
cvtColor(inputImage, grayMat, CV_BGR2GRAY);

Mat kernelX = getGaussianKernel(grayMat.cols, 50);
Mat kernelY = getGaussianKernel(grayMat.rows, 50);
Mat kernelXTranspose;
transpose(kernelX, kernelXTranspose);
Mat kernel = kernelY * kernelXTranspose;

Mat mask, processedImage;
normalize(kernel, mask, 0, 1, NORM_MINMAX);
grayMat.convertTo(processedImage, CV_64F);
multiply(mask, processedImage, processedImage);
convertScaleAbs(processedImage, processedImage);

return MatToUIImage(processedImage);

【讨论】:

以上是关于xCode 中的 OpenCV 错误:输入参数的大小不匹配的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 错误:输入参数的大小不匹配

opencv-python addWeighted() 错误 - 输入参数的大小不匹配

Xcode中有关OpenCV的链接错误

Xcode 中的 NSCameraUsageDescription 键错误

捆绑框架与XCode中的应用程序

在 Xcode 项目中使用 OpenCV 会导致链接器错误