簡體   English   中英

如何計算opencv中每個blob中的白色像素?

[英]How to count white pixels in every blob in opencv?

我正在尋找一種簡單而優雅的方法來單獨計算每個blob中的白色像素。 例如,我有這樣的圖片:

黑白圖像

碼:

cv2.findContours(mat.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
areas = [(lambda c: cv2.moments(c)['m00'])(c) for c in contours]

返回[255.0,482.5,6480.5,6230.0,15531.0,19810.0],但我想只有3個值,因為有3個單獨的blob。

最好的選擇似乎是使用OpenCV 3.0中的connectedComponentsWithStats

例:

# find all blobs and label them
n, labels, stats, _ = cv2.connectedComponentsWithStats(mat)
  • n - 不同blob的數量
  • 標簽 - 具有相同形狀的矩陣,如墊子,並包含每個點的標簽
  • 統計信息 - 按以下順序對每個blob進行統計:
    • CC_STAT_LEFT最左邊的(x)坐標,它是水平方向上邊界框的包含開始。
    • CC_STAT_TOP最上面的(y)坐標,它是垂直方向上邊界框的包含性開始。
    • CC_STAT_WIDTH邊界框的水平大小
    • CC_STAT_HEIGHT邊界框的垂直大小
    • CC_STAT_AREA連接組件的總面積(以像素為單位)

因此,如果您想知道給定blob中有多少像素,只需檢查行等於標簽和第五列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM