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;
答案 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)