其他分享
首页 > 其他分享> > 轮廓填充

轮廓填充

作者:互联网

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