我想使用泛光填充操作填充黑白影像,但有些部分缺失,如第一行影像所示,有些部分未正確填充(看起來有些部分與主要物件分離),如第二行影像所示。為了描述,我在下面展示了一些例子:
洪水填充之前與之后:

下面是我的代碼:
im_in = cv2.imread(path to image,cv2.IMREAD_GRAYSCALE)
th, im_th = cv2.threshold(im_in, 220, 255, cv2.THRESH_BINARY_INV)
im_floodfill = im_th.copy()
h, w = im_th.shape[:2]
mask = np.zeros((h 2, w 2), np.uint8)
cv2.floodFill(im_floodfill, mask, (0,0), 255)
請指教
謝謝
uj5u.com熱心網友回復:
影像的某些部分似乎缺失的原因是該cv2.floodFill()方法不包括形狀的輪廓作為需要填充的區域的一部分。
如果要保留行,可以cv2.RETR_TREE在cv2.findContours()方法中使用標志:
import cv2
import numpy as np
img = cv2.imread("image.png", cv2.IMREAD_GRAYSCALE)
img_canny = cv2.Canny(img, 50, 50)
img_dilate = cv2.dilate(img_canny, None, iterations=1)
img_erode = cv2.erode(img_dilate, None, iterations=1)
mask = np.full(img.shape, 255, "uint8")
contours, hierarchies = cv2.findContours(img_erode, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
for cnt in contours:
cv2.drawContours(mask, [cnt], -1, 0, -1)
cv2.imshow("result", mask)
cv2.waitKey(0)
輸入檔案:

輸出檔案:

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/387287.html
下一篇:從node.js檔案呼叫npx
