hough检测圆的思路:
(1)图像中取出圆的轮廓(灰度值为255)
(2)根据圆的极坐标公式:
现在已知的是圆上的点,则x,y已知,反推出x0 和 y0(圆心的位置)。
的范围是0~360度,不过注意要转化成弧度。
(3)投票机制:
每次根据(2)公式得到的点,都在数组相应坐标+1
(4)归一化:
得到最大投票数的点,生成的图像在该点的像素灰度置为255。
(5)画圆。
根据搜索的半径,画圆。
#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
using namespace std;
using namespace cv;
bool range(Mat &im, int x, int y)//判定是否在图片区域内
{
if(x >= 0 && x < im.cols &