【问题标题】:OpenCV Error in xCode: Sizes of input arguments do not matchxCode 中的 OpenCV 错误:输入参数的大小不匹配
【发布时间】: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);

}

抛出的线是

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

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

【问题讨论】:

    标签: ios xcode opencv


    【解决方案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);
    }
    

    【讨论】:

      猜你喜欢
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-31
      相关资源
      最近更新 更多