生成单通道模板

Generating a Single Channel Mask

给定多通道图像(例如 BGR),为像素值相等生成(二进制)1C 掩码的最有效方法是什么?

cv::compare() 仅适用于单通道输入图像。

使用 op== 生成 3C 掩码。
然后我可以 reduce 但这似乎是浪费第二遍。

是否有单一的方法可以做到这一点?

对于多通道矩阵,需要使用cv::inRange(),将单通道、3通道或4通道图像作为src,并取待分割颜色的下限和上限.由于要测试给定颜色的相等性,因此需要将 lower_boundupper_bound 作为相同的标量值传递。

cv::Scalar color = cv::Scalar(100, 200, 150);
cv::Mat mask;
cv::inRange(img, color, color, mask);