0
点赞
收藏
分享

微信扫一扫

计算机视觉图像识别9.3-图像轮廓

cv2.findContours(img,mode,method)


mode:轮廓检索模式

RETR_EXTERNAL:只检索最外面的轮廓

RETR_LIST:检索所有轮廓,并把它们保存在一条链表中

RETR_CCOMP:检索所有的轮廓,并把他们组织为两层,顶层是各部分的外部边界,第二层是空洞的边界

RETR_TREE:检索所有的轮廓,并重构嵌套轮廓的整个层次【注意注意,这个最为常用】


method:轮廓逼近方法

CHAIN_APPROX_NONE:以Freeman链码的方式输出轮廓,所有其他方法输出多边形(顶点的序列)

CHAIN_APPROX_SIMPLE:压缩水平的、垂直的和倾斜的部分,也就是,函数只保留他们的终点部分。

为了更高的准确率,使用二值图像。

先处理二值图像:

img = cv2.imread("data/car.png")
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)
cv_show('thresh', thresh)

计算机视觉图像识别9.3-图像轮廓_opencv

绘制轮廓:传入绘制图像、轮廓、轮廓索引、颜色模式、线条厚度,注意需要copy不然原图会变。

contours,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)

draw_img = img.copy()
res = cv2.drawContours(draw_img,contours,-1,(0,0,255),2)  #-1表示所有轮廓,2表示线条宽度
cv_show('res', res)

计算机视觉图像识别9.3-图像轮廓_opencv_02


举报

相关推荐

0 条评论