更新:调整算法,识别出一副图像中最近的球。球越近,图像显示的半径越大,所以只要找出图像中半径最大的球就是最近的球。底盘程序优先处理最近的球。
效果:可以准确的找出一副图像中最近的球。
TIP: flag1:检测到图像中有球的标志位,1有0无。
flag2:检测到图像中球的个数。
代码如下:
HoughCircles(canny_output, circles, CV_HOUGH_GRADIENT, 1, 40, 250, 27, 4, 70);//霍夫变换检测圆
cout << "x=\ty=\tr=" << endl;
for (size_t i = 0; i < circles.size() ; i++)//找出一幅图里有几个球
{
x[i] = cvRound(circles[i][0]);
y[i] = cvRound(circles[i][1]);
z[i]= cvRound(circles[i][2]);
flag1 = 1;
flag2 = i;
}
if (flag1 == 1)//检测到图像中有球
{
flag1 = 0;//标志位置零
if (flag2 == 0)//如果只检测到一个球
num = 0;
else//检测到多个球
{
int max = z[0];
num = 0;
for (int i = 1; i < flag2