私は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) が私が期待している赤であるため、この 2 つの色が異なることです。色を処理するには、hsv 色空間で必要です。誰でもこれを理解できますか?前もって感謝します。