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

4

我正在使用inrange函数过滤一个RGB图像(附带的RGB图像),以过滤掉除橙色之外的所有颜色。

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个回答

7
您的图像中橙色的颜色值为(254, 165, 0)。更重要的是,OpenCV中的图像是按BGR顺序排列的,因此您需要执行以下操作:
cv::inRange(image, cv::Scalar(0, 140, 254), cv::Scalar(0, 165, 254), output);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接