【图像处理】检测圆的Hough变换算法

 时间:2024-10-12 09:51:12

1、先检测边界。img0=cv2.imread('0.png')img=cv2.Canny(img0,0,255)

【图像处理】检测圆的Hough变换算法

3、检测半径为100的圆:r=100for i in range(u): for j in range(v): if img[i,j]!=0: for m in range(360): t=m*np.pi/180 x=int(i-r*np.cos(t)) y=int(j-r*np.sin(t)) if 0<x<u and 0<y<v: acc[x,y]=acc[x,y]+1没有明显的极值点,就表示没有半径为100的圆。

【图像处理】检测圆的Hough变换算法

5、用for循环检测不同半径的圆:for r in range(45,50): acc=img*0 for i in range(u): for j in range(v): if img[i,j]!=0: for m in range(360): t=m*np.pi/180 x=int(i-r*np.cos(t)) y=int(j-r*np.sin(t)) if 0<x<u and 0<y<v: acc[x,y]=acc[x,y]+1 if np.max(acc)<300: pass else: cv2.imwrite('2.png',acc) x,y=np.where(acc==np.max(acc)) cv2.circle(img0,(x[0],y[0]),r,(0,0,255),2)检测失败,而且很耗时。

【图像处理】检测圆的Hough变换算法

6、opencv内置检测方法,可以同时检测不同半径的圆,而且时间很短:img0=cv2.imread('0.png')img=cv2.Canny(img0,0,255)circles= cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,100, param1=100,param2=30, minRadius=45,maxRadius=100)for circle in circles[0]: x=int(circle[0]) y=int(circle[1]) r=int(circle[2]) cv2.circle(img0,(x,y),r,(0,0,255),2)cv2.imwrite('3.png',img0)

【图像处理】检测圆的Hough变换算法
  • matlab如何绘制函数图像
  • JAVA聊天程序如何实现文件传送
  • MATLAB怎么开启启用集成的警告和错误消息
  • 用Protel 99 SE绘制原理图前做什么准备?
  • myeclipse如何查找替换项目关键字
  • 热门搜索
    蝴蝶的特点 孕妇可以吃海鲜吗 阿房宫景区 里约热内卢旅游 连云港旅游景点 水仙怎么养 稻城旅游 武汉旅游景区 宿迁旅游 云南丽江旅游景点