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
Opencv 目标跟踪器的自动颜色校准_Opencv_Video Tracking - Fatal编程技术网

Opencv 目标跟踪器的自动颜色校准

Opencv 目标跟踪器的自动颜色校准,opencv,video-tracking,Opencv,Video Tracking,这是我的第一篇帖子,如果我错过了什么,请原谅 我一直在用VisualStudioC++来使用OpenCV2。我有一个基本的物体跟踪器。通过应用高斯模糊、转换为HSV、使用轨迹栏进行阈值化、腐蚀然后膨胀。现在,我想建立一种方法来轻松校准要设置阈值的颜色,而无需使用轨迹栏。 我试着设置一个感兴趣的区域,并采用我两种方法都尝试过的平均BGR或HSV值。然后,如果需要,使用轨迹栏进行更精细的调整,但它似乎不起作用。我是走对了路,还是有更好的办法 我基本上是跟着这段视频走的。 我不是在寻找一个代码复制和

这是我的第一篇帖子,如果我错过了什么,请原谅

我一直在用VisualStudioC++来使用OpenCV2。我有一个基本的物体跟踪器。通过应用高斯模糊、转换为HSV、使用轨迹栏进行阈值化、腐蚀然后膨胀。现在,我想建立一种方法来轻松校准要设置阈值的颜色,而无需使用轨迹栏。 我试着设置一个感兴趣的区域,并采用我两种方法都尝试过的平均BGR或HSV值。然后,如果需要,使用轨迹栏进行更精细的调整,但它似乎不起作用。我是走对了路,还是有更好的办法

我基本上是跟着这段视频走的。

我不是在寻找一个代码复制和粘贴。我只是在寻找一种算法或一种方法的解释。干杯

编辑

对不起,我会试着把它弄清楚。我所做的是为一个家庭机器人视觉项目编写一个目标跟踪程序。我只是想让它更容易校准什么颜色是阈值。目前,我使用轨迹栏设置阈值的最小和最大HSV值。然后使用腐蚀和扩张来清除二值图像。在使用cv::findConturs和cv::moments查找最大轮廓的质心之前。 我尝试的是在屏幕中央设置一个40x40像素的小正方形。举个例子,当我在这个正方形里拿着一个绿色的球,按下空格键。我循环通过正方形中的每个像素,得到每个单独的色调、饱和度和值,嗯…值。然后采用每个的模式,并使用该模式设置最小和最大阈值

下面是一段代码

ifcv::waitKey20==32{//等待空格键

int count = 0;
cv::Mat roi_Crop = frame_HSV(roi);       //create cropped image from frame_HSV

 for(int i=0; i<roi_Crop.rows; i++)    // cycle through each pixel
 {
    for(int j=0; j<roi_Crop.cols; j++)
    { 

Hue[count] = roi_Crop.at<cv::Vec3b>(i,j)[0];
Sat[count] = roi_Crop.at<cv::Vec3b>(i,j)[1];
Val[count] = roi_Crop.at<cv::Vec3b>(i,j)[2];
count++;
    }
 }
HSV_Mode[0] = findMode(Hue);
HSV_Mode[1] = findMode(Sat);
    HSV_Mode[2] = findMode(Val);
}


我希望这能有所帮助。

问题似乎不太清楚。你能更清楚地问一下吗?你想在代码中保持颜色一致吗?对不起,你的解释对我来说很模糊!康斯坦丁:对不起,你说的“颜色一致性”是什么意思?我想要的是能够在屏幕上的特定区域中保持彩色对象。点击一个键,然后开始跟踪该颜色。我已经编辑了上面的原始查询。我希望这会把事情弄清楚。