如何从C ++中的十六进制颜色值获取OpenCV HSV值?

时间:2016-12-07 11:31:47

标签: c++ opencv colors hex hsv

我想检测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);

enter image description here

1 个答案:

答案 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颜色空间中的值是什么。 让我知道它是否有帮助!