[OpenCV基礎][Python]connectedComponent連通域分析

更新於 發佈於 閱讀時間約 4 分鐘


本篇文章主要講述cv2.connectedComponent應用於物件上的分割,將不同文字分割並用不同顏色標記。



範例程式結果圖

標示連通域結果

標示連通域結果


函式介紹

cv2.connectedComponentsWithStats

是 OpenCV 中用來執行連通元件標記的函式之一。

它的作用是將二值化的影像中的連通元件找出來,並給每個連通元件分配一個標籤,同時提供每個連通元件的統計信息,例如面積、中心點等。

函式的語法如下:

num_labels, labels, stats, centroids = cv2.connectedComponentsWithStats(binaryImg, connectivity=8)


其中各參數的意義如下:

  • binaryImg:二值化的影像,黑白兩色分別表示目標物體和背景
  • connectivity:連通性,設置為 8 表示在水平、垂直和對角線方向均為連通。


函式的返回值包括:

  • num_labels:連通元件的數量(第一個標籤是代表背景的)。
  • labels:與輸入影像同大小的陣列,每個像素點的標籤值對應該像素所屬的連通元件
    ※注意標記的順序,是由左至右,由上至下的順序編號,若有物件在同一排略高就會先被優先標記。
  • stats:一個陣列,包含每個連通元件的統計信息,例如面積、外接矩形的大小等。
  • centroids:一個陣列,包含每個連通元件的中心點坐標。

這個函式在圖像分割物體檢測等領域中很常用,可以幫助我們識別圖像中的不同物體或區域

連通域標記示意圖

連通域標記示意圖


程式範例

import cv2
import numpy as np

# 讀取圖像
image = cv2.imread('輸入圖片路徑')

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 二值化處理
_, binaryImg = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)

# 連通域分析
num_labels, labels, stats, centroids = cv2.connectedComponentsWithStats(binaryImg, connectivity=8)

# 設定不同顏色的標記
colors = [(255, 0, 0), (0, 255, 0), (0, 0, 255), (255, 255, 0), (255, 0, 255)]

# 繪製不同顏色的標記
for i in range(1, num_labels):
color = colors[i % len(colors)] # 循環選擇顏色
# 標記為指定的顏色
mask = labels == i
image[mask] = color

# 顯示結果
cv2.imshow('Connected Components', image)
cv2.waitKey(0)
cv2.destroyAllWindows()


標記為指定的顏色方法是為先創建一個mask的遮罩,然後在將遮罩內的值指定為想要的色

# 標記為指定的顏色
mask = labels == i
image[mask] = color
  1. mask = labels == i:這裡,我們創建了一個布林遮罩(boolean mask),這個遮罩的形狀與原始圖像相同。遮罩中的每個元素都是布林值(True或False),根據連通域分析的結果,如果某個像素屬於指定的連通區域(或物體),則對應位置為True,否則為False。labels == i的作用是找到與特定標籤(i)對應的像素。
  2. image[mask] = color:這一行程式碼的目的是將屬於特定連通區域的像素在原始圖像上標記為指定的顏色。通過布林遮罩mask,我們選擇了屬於特定連通區域的像素位置,然後將這些像素的值(即圖像中對應位置的像素)設置為指定的顏色color


留言
avatar-img
留言分享你的想法!
螃蟹_crab-avatar-img
發文者
2024/09/12
[OpenCV][Python]利用連通域分析來過濾雜點提及了這篇文章,趕快過去看看吧!
avatar-img
螃蟹_crab的沙龍
147會員
265內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
螃蟹_crab的沙龍的其他內容
2025/02/15
在電腦視覺應用中,輪廓(Contour)常用來描述物體的邊界。 當圖像中有雜訊或物體邊緣過於複雜時,我們可以利用輪廓逼近技術,將輪廓簡化成較少點數的多邊形,這不僅有助於後續的形狀分析,也能提高處理速度。 本文將介紹如何使用 OpenCV 中的 cv2.arcLength 與 cv2.approx
Thumbnail
2025/02/15
在電腦視覺應用中,輪廓(Contour)常用來描述物體的邊界。 當圖像中有雜訊或物體邊緣過於複雜時,我們可以利用輪廓逼近技術,將輪廓簡化成較少點數的多邊形,這不僅有助於後續的形狀分析,也能提高處理速度。 本文將介紹如何使用 OpenCV 中的 cv2.arcLength 與 cv2.approx
Thumbnail
2024/12/02
中值濾波器(Adaptive Median Filter)是一種針對噪聲去除的圖像處理技術,主要應用於處理含有椒鹽雜訊的圖像,但在椒鹽雜訊過大時就會面臨,若為了處理掉雜訊,使用的處理窗口(kernel)就要大一點,會造成圖像的邊緣模糊掉。 後面為解決這個問題,就發展了自適應中值濾波器,其概念源自於
Thumbnail
2024/12/02
中值濾波器(Adaptive Median Filter)是一種針對噪聲去除的圖像處理技術,主要應用於處理含有椒鹽雜訊的圖像,但在椒鹽雜訊過大時就會面臨,若為了處理掉雜訊,使用的處理窗口(kernel)就要大一點,會造成圖像的邊緣模糊掉。 後面為解決這個問題,就發展了自適應中值濾波器,其概念源自於
Thumbnail
2024/10/03
在影像處理中,形態學操作是非常重要的一種技術,能夠幫助我們去除噪點、強化特徵、修復物體的形狀等。形態學操作的核心是「結構元素」(kernel),不同形狀的結構元素會產生不同的處理效果。本文將介紹如何使用不同形狀的結構元素來進行圖像處理,並結合實際程式範例和測試圖片來說明其效果。
Thumbnail
2024/10/03
在影像處理中,形態學操作是非常重要的一種技術,能夠幫助我們去除噪點、強化特徵、修復物體的形狀等。形態學操作的核心是「結構元素」(kernel),不同形狀的結構元素會產生不同的處理效果。本文將介紹如何使用不同形狀的結構元素來進行圖像處理,並結合實際程式範例和測試圖片來說明其效果。
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
Thumbnail
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
本篇文章主要講述cv2.connectedComponent應用於物件上的分割,將不同文字分割並用不同顏色標記。 範例程式結果圖 cv2.connectedComponentsWithStats 是 OpenCV 中用來執行連通元件標記的函式之一。
Thumbnail
本篇文章主要講述cv2.connectedComponent應用於物件上的分割,將不同文字分割並用不同顏色標記。 範例程式結果圖 cv2.connectedComponentsWithStats 是 OpenCV 中用來執行連通元件標記的函式之一。
Thumbnail
可選串聯(?.)運算符用於訪問 object 的屬性或調用函數。如果使用該運算符訪問的object 或調用的函式為 undefined 或 null,則表達式會回傳 undefined,而不是拋出錯誤。
Thumbnail
可選串聯(?.)運算符用於訪問 object 的屬性或調用函數。如果使用該運算符訪問的object 或調用的函式為 undefined 或 null,則表達式會回傳 undefined,而不是拋出錯誤。
Thumbnail
這篇要使用IPAdapter搭配遮罩來進行特殊的構圖方式。
Thumbnail
這篇要使用IPAdapter搭配遮罩來進行特殊的構圖方式。
Thumbnail
當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
Thumbnail
當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News