openCV Mat出现问题“输入参数的大小不匹配”

时间:2019-12-13 13:34:15

标签: c++ opencv

Mat newMask = Mat::zeros(mask.size(), mask.type());

for (int i=0; i< 3; i++){
    Mat tray = Mat::zeros(mask.size(), mask.type());
    inRange(mask,i+1, i+1, tray);
    cv::erode(tray, tray, getStructuringElement(MORPH_RECT, cv::Size(5, 5)), cv::Point(-1, -1));
    newMask += tray;
}

该方法应该有效吗?

我崩溃了:

  

输入参数的大小不匹配)   该操作既不是'array op   数组”(其中数组具有相同的   尺寸和相同数量的频道),   既不是'array op scalar',也不是'scalar op   函数“ arithm_op”中的数组”

在下面的行:

newMask += tray;

2 个答案:

答案 0 :(得分:0)

图像的通道号不同。那就是原因。您可以像这样简单地更改代码:

Mat newMask = Mat::zeros(mask.size(), mask.type());

cvtColor(newMask,newMask,CV_BGR2GRAY);
    for (int i=0; i< 3; i++){
        Mat tray = Mat::zeros(mask.size(), mask.type());
        inRange(mask,i+1, i+1, tray);
        cv::erode(tray, tray, getStructuringElement(MORPH_RECT, cv::Size(5, 5)), cv::Point(-1, -1));
        newMask += tray;
    }

您还可以检查提到相同问题的this link

答案 1 :(得分:0)

感谢尤努斯,

现在此代码:

str.strip

在最后一行崩溃

  

线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x0)