什么网站可以兼职做平面设计,2014网站备案,专业团队张伟图片,wordpress 效率插件一、获取圆形检测原理
原图如下#xff1a; 选取一个圆的任意点设定为圆形进行绘制圆形#xff0c;交与一点 再将平面直角坐标系上的各点#xff0c;通过公式转到极坐标上
很明显的看出较亮的点为圆心#xff0c;然后通过半径进行绘制出圆。
二、实现步骤
由于霍夫圆检…一、获取圆形检测原理
原图如下 选取一个圆的任意点设定为圆形进行绘制圆形交与一点 再将平面直角坐标系上的各点通过公式转到极坐标上
很明显的看出较亮的点为圆心然后通过半径进行绘制出圆。
二、实现步骤
由于霍夫圆检测对噪声比较明显故需要首先对图像进行滤波操作(中值滤波等) 霍夫圆形检测是基于图像梯度实现的分为两步 1检测边缘发现可能是圆的圆形 2基于第一步从候选的圆心中开始计算求出最佳的半径大小
三、代码实现
cv2.HoughCircles(cimage,cv2.HOUGH_GRADIENT,1,20,param150,param230,minRadius0,maxRadius0) cv2.HOUGH_GRADIENT基于梯度计算 1步长 20最小距离即检测出来的两个圆形之间的最小距离超过这个最小距离才会认定是两个圆 param150,param230高低阈值的设定 minRadius0,maxRadius0当不确定圆的半径时可以这样设定
import cv2
import numpy as np
from matplotlib import pyplot as pltdef detect_circles(image):dst cv2.pyrMeanShiftFiltering(image,10,100)#消除噪声必不可少cimage cv2.cvtColor(dst,cv2.COLOR_BGR2GRAY)circles cv2.HoughCircles(cimage,cv2.HOUGH_GRADIENT,1,20,param150,param230,minRadius0,maxRadius0)circles np.uint16(np.around(circles))for i in circles[0,:]:cv2.circle(image,(i[0],i[1]),i[2],(0,0,255),2)cv2.circle(image,(i[0],i[1]),2,(255,0,0),2)#圆心cv2.imshow(circles,image)src cv2.imread(rG:\Juptyer_workspace\study\opencv\opencv3\circles.jpg)
cv2.imshow(image,src)
cv2.namedWindow(image,cv2.WINDOW_AUTOSIZE)
detect_circles(src)
cv2.waitKey(0)
cv2.destroyAllWindows()效果图如下
相关文章: