我正在使用 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);
当我使用这些值时,它会返回正确的输出。这里有什么区别,我做错了什么?
最佳答案
图像中的橙色是 (254, 165, 0)。但更重要的是,OpenCV 中的图像是按 BGR 顺序排列的,因此您需要执行以下操作:
cv::inRange(image, cv::Scalar(0, 140, 254), cv::Scalar(0, 165, 254), output);
关于c++ - 使用 inrange (OpenCV) 对 RGB 图像进行阈值处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45787906/