python学习随笔05 对于图片中圆中有圆的提取

使用OpcnCV的HoughCircles函数能够单独提取出单个的圆,或者外圆,但是对于圆中有圆的情况就不好进行判断,处理会稍微复杂(反正我没整出来)
最后经过考虑使用approxPolyDP函数进行处理。
上传的函数会与演示图片有些不同,主要是上传程序仅有测试多圆检测的一部分,不包含界面及其他,相对于效果图,差的主要就是综合显示
这是原图片
在这里插入图片描述
最终实现的效果如图所示在这里插入图片描述
主函数代码如下,其中imhandle是自己的python程序

import cv2
import imghandle
img_source = {
   }
para2 = 100
mindst = 50
img_source["path"] = "C://Users//11426//Desktop//test.png" #图片路径
img_source["img"] = cv2.imread(img_source["path"])  #存储原图数据
img_source["grayimg"] = imghandle.img_to_gray(img_source["img"],dtype='G',timeprint=True)   #灰度处理
img_source["grayimg"] = cv2.GaussianBlur(img_source["grayimg"],(3,3),3) #高斯模糊
img_source["binarization"] = imghandle.gray_to_binarization(img_source["grayimg"],dtype=0,thresh=150)   #二值化处理
img_source["binarization"] = cv2.bitwise_not(img_source["binarization"])    #图像取反,可以在二值化处理中将参数更改来实现这部
img_source["contours_data"] = imghandle.contours_get(img_source["binarization"])    #获取边缘数据
img_source["contours_shape"] = list()
for i in range(0,len(img_source["contours_data"])): #边缘数据处理及形状数据分析
    img_source["temp"] = img_source["img"].copy()
    cv2.putText(img_source["temp"], (("nums:%d") % (i)), (0, 50), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)    #显示第几个轮廓
    cv2.drawContours(img_source["temp"],img_source["contours_data"],i,(0, 0, 255),-1)   #画出轮廓
    cv2.imshow("temp",img_source["temp"])
    img_source["contours_shape"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值