import cv2 img = cv2.imread( 'E:\A.jpeg' ) cv2.imshow( 'img', img ) gray = cv2.cvtColor( img, cv2.COLOR_BGR2GRAY ) ret, binary = cv2.threshold( gray, 127, 255, cv2.THRESH_BINARY ) contours, hierarchy = cv2.findContours( binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE ) cv2.drawContours( img, contours, -1, ( 160, 240, 120 ), 3 ) cv2.imshow( 'img1', img ) cv2.waitKey( 0 ) cv2.destroyAllWindows()
参1(是寻找轮廓的图像)
参2(表示轮廓的检索模式)有四种:
(1).cv2.RETR_EXTERNAL 只检测外轮廓
(2).cv2.RETR_LIST 检测的轮廓不建立等级关系
(3).cv2.RETR_CCOMP 建立两个等级的轮廓,
上面的一层为外边界,
里面的一层为内孔的边界信息。
如果内孔内还有一个连通物体,
这个物体的边界也在顶层
(4).cv2.RETR_TREE 建立一个等级树结构的轮廓
参3(method为轮廓的近似办法):
(1)cv2.CHAIN_APPROX_NONE 存储所有的轮廓点,
相邻的两个点的像素位置差不超过1,
即max(abs(x1-x2),abs(y2-y1))==1
(2).cv2.CHAIN_APPROX_SIMPLE 压缩水平方向,
垂直方向,对角线方向的元素,
只保留该方向的终点坐标,
例如一个矩形轮廓只需4个点来保存轮廓信息
(3).cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS
使用teh-Chinl chain 近似算法
值1:
是轮廓本身,
值2:
每条轮廓对应的属性。
OpenCV -- 找图片轮廓,布布扣,bubuko.com
原文:http://blog.csdn.net/pandora_madara/article/details/33081553