使用cv2.findContours找到轮廓,cv2.fillConvexPoly填充轮廓区域

本文受该博客的启发

https://blog.csdn.net/qq_43534932/article/details/88386826

使用图中图片自己当做一个小练习做了一下,因此把代码分享出来,希望和大家一起学习。原图如下:
使用cv2.findContours找到轮廓,cv2.fillConvexPoly填充轮廓区域_第1张图片
结果如下:
使用cv2.findContours找到轮廓,cv2.fillConvexPoly填充轮廓区域_第2张图片
使用cv2.findContours找到轮廓,cv2.fillConvexPoly填充轮廓区域_第3张图片
使用cv2.findContours找到轮廓,cv2.fillConvexPoly填充轮廓区域_第4张图片
代码如下:

__author__ = 'Administrator'
import cv2
import numpy as np
def cv_show(name,img):
    cv2.imshow(name,img)
    cv2.waitKey(0)    #按键盘上任意键退出图片
    cv2.destroyAllWindows()
f=cv2.imread('C:/Users/Administrator/Desktop/1.png')
img = cv2.cvtColor(f,cv2.COLOR_BGR2GRAY)
print(img.shape)
cv_show('img',img)
print(img.dtype)
ret3,th3 = cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)#OTSU二值化
cv_show('res3',th3)
background1=np.zeros(f.shape)
contours4, hierarchy4 = cv2.findContours(th3,cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
i=1
for c in contours4[0:]:
    i+=1
    draw_img4 = background1.copy()
    res4= cv2.drawContours(draw_img4, c,-1,(0, 1, 1),cv2.FILLED)
    res5=cv2.fillConvexPoly(res4, c, (255, 255, 0))
    path='C:/Users/Administrator/Desktop/'+str(i)+'.jpg'
    cv2.imwrite(path,res5)
    cv_show('res5',res5)

`原图虽然看起来是黑白的,但是由于我是从博客中截图得到的,因此图片的格式是712*712*3,因此又做了灰度化和二值化转化成真正的黑白图。``


你可能感兴趣的:(使用cv2.findContours找到轮廓,cv2.fillConvexPoly填充轮廓区域)