【发布时间】:2016-09-03 08:43:57
【问题描述】:
我正在尝试在 opencv 中使用 inrange 函数来获取正方形(绿色部分),但它似乎不起作用。这是我的图像 这是我的代码:
cv::inRange(src, cv::Scalar(35, 20, 20), cv::Scalar(85, 255, 200), src);
如何使用正确的 hsv 值获得所有绿色部分....
【问题讨论】:
我正在尝试在 opencv 中使用 inrange 函数来获取正方形(绿色部分),但它似乎不起作用。这是我的图像 这是我的代码:
cv::inRange(src, cv::Scalar(35, 20, 20), cv::Scalar(85, 255, 200), src);
如何使用正确的 hsv 值获得所有绿色部分....
【问题讨论】:
查看 HSV 色轮并选择正确的范围。请注意,HSV 适合 3 个 8 位通道,但 H 通道不适合,因此您必须将此值除以 2。 的范围H 在 OpenCV 中为 0-180。请参阅this question 以供参考。
使用此配置(我使用 ImageJ 而非 OpenCV 测试了值)
cv::inRange(src, cv::Scalar(35, 60, 200), cv::Scalar(60, 255, 255), src);
我得到了这个结果:
使用cv::findContours,您可以轻松检测所有轮廓并仅按形状和大小或其层次结构过滤正方形。
【讨论】: