使用OpenCV的findContours获取轮廓并切割(python)
2017-12-07 11:54
573 查看
1 获取轮廓
OpenCV2获取轮廓主要是用cv2.findContoursimport 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()函数获取轮廓的范围,即左上角原点,以及他的高和宽。然后用cv2.rectangle()方法画出矩形轮廓for i in range(0,len(contours)): x, y, w, h = cv2.boundingRect(contours[i]) cv2.rectangle(image, (x,y), (x+w,y+h), (153,153,0), 5)
3 切割轮廓
轮廓的切割主要是通过数组切片实现的,不过这里有一个小技巧:就是图片切割的w,h是宽和高,而数组讲的是行(row)和列(column)所以,在切割图片时,数组的高和宽是反过来写的
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获取轮廓并切割实例
- 使用OpenCV的函数findContours提取轮廓并绘制轮廓
- OpenCV通过cvFindContours与cvDrawCountours函数查找轮廓
- opencv使用cvFindContours提取联通域(ZZ)
- 使用OpenCV中cvFindContour函数检测轮廓的心得
- Opencv中cvFindContours函数使用
- OpenCV用cvFindContours求得轮廓,存放于seq中,取出各个轮廓点
- opencv使用cvFindContours提取联通域
- opencv cvFindContours 查找轮廓 cvDrawCountours 用法及例子
- cvFindContours 获取轮廓中的所有点
- opencv查找轮廓---cvFindContours && cvDrawCountours 用法及例子
- opencv使用cvFindContours提取联通域
- OpenCV轮廓、边缘、边界的相关函数cv::findContours()等
- OpenCV通过cvFindContours与cvDrawCountours函数查找轮廓
- 使用OpenCv的cvMinAreaRect2函数获取轮廓的可倾斜最小矩形区域
- [转]opencv使用cvFindContours提取联通域
- opencv findContours使用问题
- opencv查找轮廓---cvFindContours && cvDrawCountours 用法及例子
- 使用CvStartfindcontours画出轮廓。
- Opencv的cvFindContours使用注意事项!!