gpt4 book ai didi

python - cv2.floodFill() 卡在某些输入上

转载 作者:太空宇宙 更新时间:2023-11-03 22:54:21 27 4
gpt4 key购买 nike

我有一个循环遍历图像并每 20 个像素进行一次填充:

h, w = image.shape[:2]
mask = np.zeros((h+2, w+2), np.uint8)
mask[:] |= 0
flags = 4
flags |= cv2.FLOODFILL_FIXED_RANGE
for x in range(20,image.shape[1]-20):
for y in range(20,image.shape[0]-20):
if x%20 == 0 and y%20 == 0:
print x, y
flooded = image.copy()
print 'starting flood fill'
minVal = min(image.item(x,y,0),image.item(x,y,1),image.item(x,y,2))
maxVal = max(image.item(x,y,0),image.item(x,y,1),image.item(x,y,2))
size = cv2.floodFill(flooded,mask,(x,y),(0,)*3, (40,)*3, (40,)*3, flags)[0]

虽然在某些时候 cv2.floodFill() 永远不会完成。如果我降低 lo 和 hi 界限,它能够进一步处理,但有时仍会卡住。还有其他人遇到过这个问题吗?

对于这张图片,它卡在像素 (40,400) 处: /Users/Justin/Downloads/images/2015-07-25-12-53-17-img1.png

最佳答案

每次 floodFill 修改它时,您都应该在循环内重新初始化 mask。您还可以通过删除 % 运算符来提高性能。并修复一个bug,image.item(x,y,,应该是image.item(y,x,.

for x in range(20,image.shape[1]-20, 20):
for y in range(20,image.shape[0]-20, 20):
print x, y
mask[:] = 0
flooded = image.copy()
print 'starting flood fill'
size = cv2.floodFill(flooded,mask,(x,y),(0,)*3, (40,)*3, (40,)*3, flags)[0]

关于python - cv2.floodFill() 卡在某些输入上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33464895/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com