Python通过OpenCV的findContours获取轮廓并切割实例
1 获取轮廓
OpenCV2获取轮廓主要是⽤cv2.findContours
import numpy as np
import cv2
im = cv2.imread('test.jpg')
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,0)
image, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
其中,findContours的第⼆个函数很重要,主要分为 cv2.RETR_LIST, cv2.RETR_TREE, cv2.RETR_CCOMP,
cv2.RETR_EXTERNAL,具体含义可参考官⽅⽂档
2 画出轮廓
为了看到⾃⼰画了哪些轮廓,可以使⽤ cv2.boundingRect()函数获取轮廓的范围,即左上⾓原点,以及他的⾼和宽。然后⽤angle()⽅法画出矩形轮廓
for i in range(0,len(contours)):
x, y, w, h = cv2.boundingRect(contours[i])
3切割轮廓
轮廓的切割主要是通过数组切⽚实现的,不过这⾥有⼀个⼩技巧:就是图⽚切割的w,h是宽和⾼,⽽数组讲的是⾏(row)和列(column)
rectangle函数opencv所以,在切割图⽚时,数组的⾼和宽是反过来写的
newimage=image[y+2:y+h-2,x+2:x+w-2] # 先⽤y确定⾼,再⽤x确定宽
nrootdir=("E:/cut_image/")
if not os.path.isdir(nrootdir):
os.makedirs(nrootdir)
cv2.imwrite( nrootdir+str(i)+".jpg",newimage)
print (i)
这样就可以把确定的轮廓都切割出来了。
总结
以上就是本⽂关于Python通过OpenCV的findContours获取轮廓并切割实例的全部内容,希望对⼤家有所帮助。感兴趣的朋友可以继续参阅本站:
如有不⾜之处,欢迎留⾔指出。感谢朋友们对本站的⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论