使用inrange(OpenCV)对RGB图像进行阈值处理

时间:2017-08-21 00:08:47

标签: c++ opencv

我正在使用inrange函数过滤RGB图像(attached RGB image),以滤除除橙色外的图像中的所有颜色。

cv::Mat output;
cv::inRange(image, cv::Scalar(255, 140 , 0), cv::Scalar(255, 165, 0),output);
cv::imshow("output", output);

然而,这一切都是返回黑色输出。另外,我看到了使用inrange函数的另一个问题,它使用了值

cv::inRange(image, cv::Scalar(0, 125, 0), cv::Scalar(255, 200, 255), output);

当我使用这些值时,它返回正确的输出。这有什么不同,我做错了什么?

1 个答案:

答案 0 :(得分:6)

图像中的橙色为(254,165,0)。但更重要的是,OpenCV中的图像是按BGR顺序排列的,所以你需要这样做:

cv::inRange(image, cv::Scalar(0, 140, 254), cv::Scalar(0, 165, 254), output);