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

use*_*972 3 c++ opencv

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

cv::Mat output;
cv::inRange(image, cv::Scalar(255, 140 , 0), cv::Scalar(255, 165, 0),output);
cv::imshow("output", output);
Run Code Online (Sandbox Code Playgroud)

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

cv::inRange(image, cv::Scalar(0, 125, 0), cv::Scalar(255, 200, 255), output);
Run Code Online (Sandbox Code Playgroud)

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

szy*_*zym 6

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

cv::inRange(image, cv::Scalar(0, 140, 254), cv::Scalar(0, 165, 254), output);
Run Code Online (Sandbox Code Playgroud)