Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法将YUV阈值限制转换为HSV_C++_Opencv_Computer Vision_Hsv - Fatal编程技术网

C++ 无法将YUV阈值限制转换为HSV

C++ 无法将YUV阈值限制转换为HSV,c++,opencv,computer-vision,hsv,C++,Opencv,Computer Vision,Hsv,我想将yuv_min和yuv_max值转换为hsv_min和hsv_max yuv_thresh = [97, 43, 148, 188, 81, 167] // [y_min, u_min, v_min, y_max, u_max, v_max] cv::Mat rgb_min; cv::Mat hsv_min; cv::Mat yuv_min(1,1,CV_8UC3,cv::Scalar(yuv_thresh[0],yuv_thresh[1],yuv_thresh[2])); cvtCo

我想将yuv_min和yuv_max值转换为hsv_min和hsv_max

yuv_thresh = [97, 43, 148, 188, 81, 167] // [y_min, u_min, v_min, y_max, u_max, v_max]

cv::Mat rgb_min;
cv::Mat hsv_min;
cv::Mat yuv_min(1,1,CV_8UC3,cv::Scalar(yuv_thresh[0],yuv_thresh[1],yuv_thresh[2]));

cvtColor(yuv_min, rgb_min, cv::COLOR_YUV2BGR);
cvtColor(rgb_min,rgb_min,cv::COLOR_BGR2RGB);
cvtColor(rgb_min, hsv_min, CV_BGR2HSV);
cv::Vec3b hsv_min_vec = hsv_min.at<cv::Vec3b>(0,0);

for (int i = 0; i < 3; i++)
{
  cout<< "hsv_min: "<< i << " = " <<(float)hsv_min_vec.val[i] << endl;
}

cv::Mat rgb_max;
cv::Mat hsv_max;
cv::Mat yuv_max(1,1,CV_8UC3,cv::Scalar(yuv_thresh[3],yuv_thresh[4],yuv_thresh[5]));

cvtColor(yuv_max, rgb_max, cv::COLOR_YUV2BGR);
cvtColor(rgb_max,rgb_max,cv::COLOR_BGR2RGB);
cvtColor(rgb_max, hsv_max, CV_BGR2HSV);
cv::Vec3b hsv_max_vec = hsv_max.at<cv::Vec3b>(0,0);

for (int i = 0; i < 3; i++)
{
  cout<< "hsv_max: "<< i << " = " <<(float)hsv_max_vec.val[i] << endl;
}
yuv_thresh=[97,43,148,188,81,167]/[y_min,u_min,v_min,y_max,u_max,v_max]
cv::Mat rgb_min;
cv::Mat hsv_min;
cv::Mat yuv_min(1,1,cv_8UC3,cv::Scalar(yuv_thresh[0],yuv_thresh[1],yuv_thresh[2]);
cvtColor(yuv_min、rgb_min、cv::COLOR_YUV2BGR);
CVT颜色(rgb_min,rgb_min,cv::COLOR_BGR2RGB);
CVT颜色(rgb_最小值、hsv_最小值、CV_BGR2HSV);
cv::Vec3b hsv_min_vec=hsv_min.at(0,0);
对于(int i=0;i<3;i++)
{

您可能正在将BGR值转换为RGB值,但随后使用BGR2HSV而不是RGB2HSV。您有一个两步算法。您是否验证了中间步骤(YUV->BGR)在发布之前?@m3h0w是的,我已经验证了中间步骤BGR范围是正确的。是否有直接的方法将YUV转换为HSV?@AxelB。请检查我在最后提到的链接。由于opencv 2.4中的错误,我将BGR2RGB转换为BGR值。我不确定这是您的问题,但尝试将
\u FULL
添加到
cvtColor
colorspace参数,如
BGR2HSV\u FULL
。它几乎没有任何文档记录,但会给您不同的结果。例如。