将单一BGR颜色转换为HSV C ++ OpenCV 4

时间:2018-11-30 13:44:49

标签: c++ opencv

我正在尝试使用C ++和OpenCV检测红色范围。我已经从 cv :: COLOR_BGR2HSV 颜色空间转换了图像。现在,我尝试使用以下代码将单一颜色从BGR转换为HSV色彩空间:

cv::Mat3f red_lower(cv::Vec3f(54, 41, 203)); // BGR
cv::Mat3f red_upper(cv::Vec3f(123, 109, 255));// BGR
cv::Mat3f red_lower_hsv, red_upper_hsv;

LOG("red_lower: " << red_lower);
cv::cvtColor(red_lower, red_lower_hsv, cv::COLOR_BGR2HSV);
LOG("red_lower_hsv: " << red_lower_hsv);
LOG("red_upper: " << red_upper);
cv::cvtColor(red_upper, red_upper_hsv, cv::COLOR_BGR2HSV);
LOG("red_upper_hsv: " << red_upper_hsv);

// get mask
cv::inRange(image_hsv, red_lower_hsv, red_upper_hsv, OutputImage);

我得到的输出是:

red_lower: [54, 41, 203]
red_lower_hsv: [355.18518, 0.79802954, 203]
red_upper: [123, 109, 255]
red_upper_hsv: [354.24658, 0.57254905, 255]

值不正确,并且未生成图像遮罩。我什至尝试了一个只有两个红色框的简单图像。

enter image description here

0 个答案:

没有答案