【发布时间】:2015-09-20 06:03:52
【问题描述】:
我是 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
这个错误肯定是正确的,正如我在这篇 SO 帖子中使用 type2str 函数验证的那样:How to find out what type of a Mat object is with Mat::type() in OpenCV
我也尝试使用image.copyTo(result) 而不是clone(),但这会产生相同的错误消息。 我做错了什么,如何复制Mat 以获得相同的类型?
我猜测 hacky 的解决方案是将结果的颜色转换为与图像的颜色匹配,就像这里所做的那样:OpenCV: How to convert CV_8UC1 mat to CV_8UC3 但这似乎是错误的,不是吗?
【问题讨论】:
-
根本不需要 clone() 或复制图像,这甚至是错误的。只需将结果留空,并确保您的输入 img 是 24bit bgr (CV_8UC3)。
标签: c++ opencv opencv-mat