OpenCV Python cv2.connectedComponentsWithStats

A. *_*dry 7 python opencv connected-components

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)
Run Code Online (Sandbox Code Playgroud)

输出:

黑白
图像带宽

黑底白字
图像WB

Black-On-White
--------------

Number of Components:  3

White-On-Black
--------------

Number of Components:  6
Run Code Online (Sandbox Code Playgroud)

我假设输出:

  1. 对于黑白图像,黑色为背景,白色为前景,3 个分量分别为背景、数字周围的白色和数字 4 内的白色。

  2. 对于黑白图像,黑色仍然是背景和白色前景,但现在有 6 个组件(背景和五个数字)。

似乎合乎逻辑,但我们可以将其添加到未来用户的文档中吗?我们是否可以添加功能以允许用户选择他们想要表示为背景的“颜色”(白色或黑色)?

Ope*_*r77 1

连接的组件实际上适用于背景-前景属性,其中黑色被视为背景,白色被视为前景。这实际上是一个标准,如果你问我的话,这似乎也是很自然的。如果用户想要对黑色(背景)区域进行连通分量标记,则用户有责任进行适当的反转。