opencv 在循环中调用cvtColor()可能出现的错误

在视频处理中经常需要截取roi区域进行处理,而不必全图处理,在循环中使用cvtColor()处理Mat型roi在时需要注意,作为输入的roi必须检查是否已经取值,如果将未取值的roi送入cvtColor()将报错。

                HoughCircles(tempSrc, circles, CV_HOUGH_GRADIENT, 1, 30, 100, 30, 13, 40);//霍夫圆变换寻找圆
for (size_t i = 0; i < circles.size(); i++)
{
center.x = cvRound(circles[i][0]);
center.y = cvRound(circles[i][1]);
radius = cvRound(circles[i][2]);
}


//截取感兴趣区域
int len = 2 * radius;
Mat roi(src,Rect(center.x - radius, center.y - radius, len, len));

Mat imgHSV;
if (roi.empty())
continue;

cvtColor(roi, imgHSV, COLOR_BGR2HSV);

你可能感兴趣的:(opencv 在循环中调用cvtColor()可能出现的错误)