我想检测OpenCV中的白色/灰色对象,因此我需要将#B4BAB8
转换为OpenCV HSV值。我尝试了很多东西,但我不知道如何计算这种颜色的下边和上边。#B4BAB8是对象的颜色。
我应该在cv::inRange(frmHsv, cv::Scalar([WHAT VALUE?]), cv::Scalar([WHAT VALUE?]), rangeRes);
中使用哪些值?
cv::Mat frmHsv;
cv::cvtColor(blur, frmHsv, CV_BGR2HSV);
// <<<<< HSV conversion
// >>>>> Color Thresholding
// Note: change parameters for different colors
cv::Mat rangeRes = cv::Mat::zeros(rgbmat.size(), CV_8UC1);
cv::inRange(frmHsv, cv::Scalar([WHAT VALUE?]), cv::Scalar([WHAT VALUE?]), rangeRes);
答案 0 :(得分:1)
当我在OpenCV中处理颜色空间时遇到了这个问题。正如@Andrey Smorodov在评论中提到的,值#b4bab8是一个十六进制,可以在任何颜色空间中解释。如果您在提到180,186,184时有RGB值,请按照this进行OpenCV在使用Imgproc.cvtcolor()时使用的转换。转换与this上的转换不同,因此这适用于RGB到BGR但不适用于BGR2HSV。此外,请确保您所做的转换符合Matrix的正确类型。
例如,对于CV_32FC3类型的矩阵, RGB(245,172,127)将是LUV(2.55 * 76.3,255 *(134 + 53.3)/358.0,255 *(39.5 +140)/ 262.0)。你可以简单地制作一个空的&#34; RGB&#34;您想要的任何类型的颜色(180,186,184)图像,并使用cvtcolor更改BGR2HSV(注意:OpenCV将所有RGB图像加载为BGR)并检查HSV颜色空间中的值是什么。 让我知道它是否有帮助!