设计是否必须通过cv2.connectedComponentsWithStats
黑白图像而不是黑白图像?我做了一个与另一个不同的结果。
示例代码:
import os
import cv2
root = r'pth/to/img'
fl = r'img.png'
src = os.path.join( root, fl )
img = cv2.imread( src, 0 )
img_inv = cv2.bitwise_not( img )
cv2.imshow( 'Black-on-White', img )
cv2.waitKey(0)
cv2.imshow( 'White-on-Black', img_inv )
cv2.waitKey(0)
bw_nlbls, bw_lbls, bw_stats, _ = cv2.connectedComponentsWithStats( img )
wb_nlbls, wb_lbsl, wb_stats, _ = cv2.connectedComponentsWithStats( img_inv )
bw = 'Black-On-White'
wb = 'White-On-Black'
print( bw )
print( '-'*len(bw) )
print()
print('Number of Components: ', bw_nlbls)
print()
print( wb )
print( '-'*len(wb) )
print()
print('Number of Components: ', wb_nlbls)
输出:
黑上白
白上黑
Black-On-White
--------------
Number of Components: 3
White-On-Black
--------------
Number of Components: 6
我在输出中假设:
对于Black-on-White图像,黑色作为背景,白色作为前景,3个分量是背景,数字周围是白色,4号是白色。
对于白底黑图像,黑色仍然是背景和白色前景,但现在有6个组件(背景和五个数字)。
似乎是合乎逻辑的,但是我们可以将其添加到未来用户的文档中吗?我们是否可以添加功能以允许用户选择" color"他们想要表示为背景(白色还是黑色)?
答案 0 :(得分:1)
Connected 组件实际上作用于 background-foreground 属性,其中黑色被视为背景,白色被视为前景。这实际上是一个标准,如果你问我也很自然。如果用户想要对黑色(背景)区域进行连通分量标记,则用户有责任进行适当的反演。