怎么检测图片里面的圆

时间:2024-10-16 05:22:49

1、图片灰度化。g = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

怎么检测图片里面的圆

2、用cv2.HoughCircles来检测灰度图里面的圆:yuan0 = cv2.HoughCircles(g,cv2.HOUGH忧溲枷茫_GRADIENT,1, 100,param1=100, param2=30, minRadius=10, maxRadius=300)最小半径为10,最大半径为300。这个范围之外的圆都忽略掉。

怎么检测图片里面的圆

3、把三维列表转化为二维列表:yuans = yuan0[0,:,:]

怎么检测图片里面的圆

4、对数据进行四舍五入,保留整数:yuan = np.uint16(np.around(yuans))

怎么检测图片里面的圆

5、用蓝色突显检测出来的圆:for i in yuan[:]: cv2.circle猾诮沓靥(img,(i[0],i[1]),i[2],(255,0,0),2)检测结果不靠谱,很多圆是无中生有。

怎么检测图片里面的圆

6、如果在g的基础上,先检测边界:e = cv2.Canny(g,50,200)

怎么检测图片里面的圆

7、再检测e里面的圆,效果会好一点。整体代码如下图。

怎么检测图片里面的圆

8、检测结果如下。虽然有所改善,但还是不合实际。

怎么检测图片里面的圆
© 手抄报圈