• 基于颜色和圆对乒乓球识别_20170329


    更新:调整算法,识别出一副图像中最近的球。球越近,图像显示的半径越大,所以只要找出图像中半径最大的球就是最近的球。底盘程序优先处理最近的球。

    效果:可以准确的找出一副图像中最近的球。

    TIP:  flag1:检测到图像中有球的标志位,1有0无。

             flag2:检测到图像中球的个数。

    代码如下:

    		HoughCircles(canny_output, circles, CV_HOUGH_GRADIENT, 1, 40, 250, 27, 4, 70);//霍夫变换检测圆
    
    		cout << "x=	y=	r=" << 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 + 1; i++)//对图中找到的球进行半径大小比对,选出半径最大的球
    				{
    					if (max < z[i])
    					{
    						max = z[i];
    						num = i;//num只是用来记录第几个球最近,不用置零
    					}
    				}
    			}
    			a = x[num];// 把半径最大的球的信息进行赋值
    			b = y[num];
    			c = z[num];
    			Point center(a, b);
    			int radius = c;
    			circle(imgOriginal, center, radius, Scalar(255, 255, 255), 5, 8, 0);
    		}
    		else//没有检测到球
    		{
    			a = 0;// 累加每幅图中最近球的坐标
    			b = 0;
    			c = 0;
    		}
    			cout << a << "	" << b << "	" << c << endl;//在控制台输出圆心坐标和半径
    		}


  • 相关阅读:
    #1045
    PHP程序员的技术成长规划
    403 Forbidden
    读《暗时间》的思考
    常用判断重复记录的SQL语句
    PHP中生产不重复随机数的方法
    echo 1+2+"3+4+5“输出的结果是6
    GET vs. POST
    详解PHP中的过滤器(Filter)
    Session变量在PHP中的使用
  • 原文地址:https://www.cnblogs.com/yueqiuchen/p/6641993.html
Copyright © 2020-2023  润新知