轮廓填充
作者:互联网
import cv2;
import numpy as np;
‘’’
图像说明:
图像为二值化图像,255白色为目标物,0黑色为背景
要填充白色目标物中的黑色空洞
‘’’
imgPath = “H:/image.jpg”
im_in = cv2.imread(imgPath, cv2.IMREAD_GRAYSCALE);
复制 im_in 图像
im_floodfill = im_in.copy()
Mask 用于 floodFill,官方要求长宽+2
h, w = im_in.shape[:2]
mask = np.zeros((h+2, w+2), np.uint8)
floodFill函数中的seedPoint必须是背景
isbreak = False
for i in range(im_floodfill.shape[0]):
for j in range(im_floodfill.shape[1]):
if(im_floodfill[i][j]==0):
seedPoint=(i,j)
isbreak = True
break
if(isbreak):
break
得到im_floodfill
cv2.floodFill(im_floodfill, mask, seedPoint, 255);
得到im_floodfill的逆im_floodfill_inv
im_floodfill_inv = cv2.bitwise_not(im_floodfill)
把im_in、im_floodfill_inv这两幅图像结合起来得到前景
im_out = im_in | im_floodfill_inv
cv2.imshow(‘de’,im_out)
cv2.waitKey(0)
cv2.destroyAllWindows(http://www.yesesport.com/)
标签:填充,inv,cv2,floodfill,shape,im,图像,轮廓 来源: https://blog.csdn.net/evaloveu111/article/details/115438365