魏老师学生——Cecil:学习OpenCV-机器视觉之旅
圆形:(x−xcenter)2+(y−ycenter)2 = r2
三个参数确定一个圆环。
霍夫梯度法:使用边界的梯度信息。
cv2.HoughCircle(img,cv2.HOUGH_GRADIENT,1,20,PARAM1=50,PARAM2=30,minRadius=0,maxRadius=0)
代码演示
#coding=utf-8
import cv2
import numpy as np
while True:
img=cv2.imread('mario.jpg',0)
img=cv2.medianBlur(img,5)
cimg=cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
circles=cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20,param1=50,param2=30,minRadius=0,maxRadius=0)
circles=np.uint16(np.around(circles))
for i in circles[0,:]:
cv2.circle(cimg,(i[0],i[1],i[2]),(0,0,255),2) #外圆
cv2.circle(cimg,(i[0],i[1]),2,(0,255,0),3) #中心圆
k=cv2.waitKey(0)&0xFF
if k==27:
break
cv2.imshow('result',cimg)