微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python如何截取图像中的圆形?Python图像圆形物体怎么截取

python有一个非常好用且重要的支持功能就是图像处理,而最近有小伙伴说它想使用python将图像之中的圆形物体范围给截取出来。那么这一篇文章正好就是来讲解一下,python是怎么识别处图像中的圆形并且将其截取出来的,感兴趣和想学习的话就往下看看吧。

1.那么python之中这种对图片进行处理而不是绘图操作,使用opencv第三方库是比较方便和简单的。导入软件包之后将图像读取进来再转为灰度图,这样之后才可以识别圆形物体轮廓。然后还需要将其进行二值化以及反二值化操作,代码如下所示:

import cv2
import numpy as np
image = cv2.imread('F:\Sia303-336.jpg')
img=cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
ret , thresh = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
dot=[]

2.在上面代码示例之中定义了一个用来保存轮廓坐标点的空列表,因为圆形不像矩阵一样可以通过顶端四个坐标点来选定一片区域,它需要通过准确无误的坐标并将其连接起来得到指定图像区域,所以这一步就是for循环迭代来保存圆形轮廓坐标,代码示例如下所示:

for c in contours:
    min_list=[] 
    x, y, w, h = cv2.boundingRect(c) 
    min_list.append(x)
    min_list.append(y)
    min_list.append(w)
    min_list.append(h)
    min_list.append(w*h)
    dot.append(min_list)

3.到这一步实际上就是以及将图像圆形区域的像素点都获取到了,而现在所需要做的事情是扩展一下矩形范围。这是因为图像上圆形轮廓灰度值高低差异并不能完全保证区域完整,所以需要扩展一些矩形范围来使得圆形图像尽可能存在于其中。

然后使用切片方式获取到指定坐标范围内的图像,再通过方法将去保存起来即可,详细代码示例如下所示:

max_area=dot[0][4]
for inlist in dot:
    area=inlist[4]
    if area >= max_area:
        x=inlist[0]
        y=inlist[1]
        w=inlist[2]
        h=inlist[3]
        max_area=area
x0=x-int(new_w/2)
y0=y-int(new_w/2)
w=w+new_w
h=h+new_w
crop = image[y0:y0+h, x0:x0+w]
cv2.imwrite("crop.jpg",crop)

以上就是关于“Python如何截取图像中的圆形?Python图像圆形物体怎么截取”的全部内容了,希望对你有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐