我正在尝试使用 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]
值不正确且未生成图像掩码。我什至尝试了一个只有两个红色框的简单图像。