我是 OpenCV 的新手,并且正在阅读一本书。我正在尝试使用以下内容提取指示组件区域的二进制图像:
cv::Mat result;
result = image.clone();
cv::watershed(image, result);
执行时,会产生以下错误:
segmentation.cpp:159: error: (-215) src.type() == CV_8UC3 && dst.type() == CV_32SC1
in function watershed
错误肯定是正确的,正如我type2str
在这篇 SO 帖子中使用函数验证的那样: 如何在 OpenCV 中使用 Mat::type() 找出 Mat 对象的类型
我也尝试使用image.copyTo(result)
而不是clone()
,但这会产生相同的错误消息。我做错了什么,如何复制 aMat
以获得相同的类型?
我猜 hacky 的解决方案是将结果的颜色转换为与图像的颜色匹配,如下所示:OpenCV: How to convert CV_8UC1 mat to CV_8UC3但这似乎是错误的,不是吗?