给定多通道图像(例如BGR),为像素值相等生成(二进制)1C
掩码的最有效方法是什么?
cv::compare()
仅适用于单通道输入图像。
使用op==
会产生3C
个掩码
然后我可以reduce
但那似乎是一个浪费的第二次通过。
这样做有一种通过方法吗?
答案 0 :(得分:2)
对于多通道矩阵,您需要使用cv::inRange()
,它将单通道,3通道或4通道图像作为src
,并将颜色的下限和上限分段。由于您要测试给定Color的相等性,因此您需要将lower_bound
和upper_bound
作为相同的Scalar值传递。
cv::Scalar color = cv::Scalar(100, 200, 150);
cv::Mat mask;
cv::inRange(img, color, color, mask);