我正在 windows10 上开发 opencv 4.5.2,我的代码应该能够识别颜色。我在扫描一张 20x20 的简单图片时遇到了一个问题,它的颜色肯定是红色的。
当我运行以下代码段时
#include<opencv2/opencv.hpp>
#include<iostream>
const std::string imgpath = "C:\\Users\\nicola\\Desktop\\c++\\qt\\FaceScanner\\FaceScanner\\images\\";
int main()
{
cv::Mat origin = cv::imread(imgpath+"square_red.jpg");
cv::Mat hsv;
cv::cvtColor(origin, hsv, cv::COLOR_BGR2HSV);
cv::Scalar color = cv::mean(hsv);
std::cout << "HSV: " << color[0] << " " << color[1] << " " << color[2] << "\n";
color = cv::mean(origin);
std::cout << "BGR: " << color[0] << " " << color[1] << " " << color[2] << "\n";
}
我得到的输出是
HSV: 88.4 251.532 238.768
BGR: 8.96 3.52 238.768
问题是这两种颜色不同,因为 hsv(88, 251, 238) 是一种绿色,而 bgr(8, 3, 238) 是我期待的红色。要在 hsv 颜色空间中处理我需要的颜色。任何人都可以解决这个问题吗?先感谢您。