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-python addWeighted() 错误 - 输入参数的大小不匹配