怎么检测图片里面的圆?
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、检测结果如下。
虽然有所改善,但还是不合实际。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。