付費限定

[OpenCV應用][Python]斑點檢測blob detect

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

本文將介紹OpenCV中的SimpleBlobDetector檢測斑點,也解釋與霍夫轉換找圓方法的差異。

SimpleBlobDetector 是OpenCV中用於檢測影像中的斑點(blob)的模塊之一。這個檢測過程基於一些預定義的特徵,其中包括顏色、面積、圓形度等

程式結果圖

raw-image

程式範例

import cv2
import numpy as np

# 讀取圖像
image_path = "./download.jpg" # 請替換為實際圖像的路徑
im = cv2.imread(image_path, cv2.IMREAD_COLOR)

# 初始化 SimpleBlobDetector
params = cv2.SimpleBlobDetector_Params()

# 選擇檢測的標準(可以根據需要自行調整)
# 設定參數
params.filterByColor = True #只檢測指定的顏色
params.blobColor = 0 # 若設定0 就是檢測所有顏色

params.minThreshold = 10 #最小,二值化閥值
params.maxThreshold = 200 #最大,二值化閥值

params.filterByArea = True #只檢測設定的面積內
params.minArea = 10 # 最小面積
params.maxArea = 1000 # 最大面積

params.filterByCircularity = True
params.minCircularity = 0.5 # 最小圓形度

# 創建 SimpleBlobDetector
detector = cv2.SimpleBlobDetector_create(params)

# 檢測關鍵點
keypoints = detector.detect(im)
# 提取 X 和 Y 座標
for point in keypoints:
x, y = point.pt #(X,Y)座標
x = round(x,2)
y = round(y,2)
Diameter = round(point.size,2) #直徑

print(f"Keypoint at ({x}, {y}), Diameter: {Diameter}")

# 在圖像上繪製關鍵點
im_with_keypoints = cv2.drawKeypoints(im, keypoints, np.array([]), (0, 0, 255),
cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

# 顯示原始圖像和帶有關鍵點的圖像
cv2.imshow("Original Image", im)
cv2.imshow("Image with Keypoints", im_with_keypoints)
cv2.waitKey(0)
cv2.destroyAllWindows()

程式解析

檢測到的關鍵點,主要屬性解說:

KeyPoint 物件包含以下主要屬性:

pt: 關鍵點的中心座標,是一個包含 (X, Y) 的元組。

size: 關鍵點的直徑。

angle: 關鍵點的方向,以度為單位。這是指特徵的主方向。

response: 表示關鍵點的檢測強度或響應值。通常,這可以視為特徵的質量或重要性的度量。

octave: 表示檢測到關鍵點所在的圖像金字塔層級。

class_id: 關鍵點的類別 ID,用於區分不同類型的特徵點。

設定參數

blobColor(Blob的顏色):

    • 資料類型:整數
    • 意義:指定要檢測blob 的暗亮值(0~255),0為全黑,255全白。

filterByColor(根據顏色過濾):

資料類型:布林值(True 或 False)

意義:是否根據 blob 的顏色進行過濾。如果設置為 True,則只檢測指定顏色的 blob,設置False,將檢測所有顏色


filterByArea(根據面積過濾):

資料類型:布林值

意義:是否根據 blob 的面積進行過濾。如果設置為 True,則只檢測指定面積範圍內的 blob。

minThreshold maxThreshold(最小和最大閾值):

資料類型:整數

意義:用於指定二值化閾值的範圍。blob 的檢測將在這個閾值範圍內進行。


minRepeatability(最小重複性):

資料類型:整數

以行動支持創作者!付費即可解鎖
本篇內容共 3177 字、3 則留言,僅發佈於[Python][OpenCV]學習心得筆記你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
留言
avatar-img
留言分享你的想法!
咕德-avatar-img
2024/07/03
視覺系列還有更新嗎? 這裡可以小小請求作者可以用螺絲來當教學嗎?例如怎麼分辨螺絲和螺母,螺絲的牙距等等
螃蟹_crab-avatar-img
發文者
2024/07/04
咕德 有圖檔嗎?~~ 螺絲的種類太多了~要有具體的,我才好說明如何去做大概的概念 可以用影像前處理完 在用找輪廓的方式 分割出螺絲跟螺母,在針對螺絲去做量測~影像處理中,量測最難寫
avatar-img
螃蟹_crab的沙龍
145會員
253內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
螃蟹_crab的沙龍的其他內容
2025/04/01
1. 概述 在光學字符識別(OCR)過程中,常見的問題之一是「斷字」,即原本應為一個完整字符的部分被錯誤地分割成兩個或多個獨立的字符。這通常發生在掃描文件、圖像降噪或影像二值化處理後。本篇文章將介紹一種基於 骨架化端點距離分析 的斷字檢測方法,並提供完整的 Python 實作。 2. 斷字檢測的
Thumbnail
2025/04/01
1. 概述 在光學字符識別(OCR)過程中,常見的問題之一是「斷字」,即原本應為一個完整字符的部分被錯誤地分割成兩個或多個獨立的字符。這通常發生在掃描文件、圖像降噪或影像二值化處理後。本篇文章將介紹一種基於 骨架化端點距離分析 的斷字檢測方法,並提供完整的 Python 實作。 2. 斷字檢測的
Thumbnail
2025/03/13
本教學將介紹如何使用 OpenCV 來檢測螺絲的鎖附間距,並提供完整的 Python 程式碼來實作這項功能。 🔹 1. 設計目標 使用二值化處理與形態學運算來強化影像 計算螺絲之間的間距 視覺化結果,標記最大間距並顯示數值 🔹 2. 測試用螺絲影像 🔹 3.
Thumbnail
2025/03/13
本教學將介紹如何使用 OpenCV 來檢測螺絲的鎖附間距,並提供完整的 Python 程式碼來實作這項功能。 🔹 1. 設計目標 使用二值化處理與形態學運算來強化影像 計算螺絲之間的間距 視覺化結果,標記最大間距並顯示數值 🔹 2. 測試用螺絲影像 🔹 3.
Thumbnail
2025/01/18
我們將學習如何使用 Python 和 OpenCV 實現圖像的主色提取與重新著色。 以下的程式碼展示了如何通過 KMeans 聚類演算法分析圖像,提取 HSV 色彩空間中的主色,並將圖像重新著色,提取想偵測的物件的顏色。 在官網案例,實作為RGB色彩空間,但如果套用HSV色彩空間則會因為H色
Thumbnail
2025/01/18
我們將學習如何使用 Python 和 OpenCV 實現圖像的主色提取與重新著色。 以下的程式碼展示了如何通過 KMeans 聚類演算法分析圖像,提取 HSV 色彩空間中的主色,並將圖像重新著色,提取想偵測的物件的顏色。 在官網案例,實作為RGB色彩空間,但如果套用HSV色彩空間則會因為H色
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
本文將說明如何去辨識出圖片文字​位置及高寬。
Thumbnail
本文將說明如何去辨識出圖片文字​位置及高寬。
Thumbnail
在影像辨識中,若遇到物件與背景難以分辨的狀況下,先做一下色彩分析,知道了色彩強度階層上的像素數,有助於了解後續需要做什麼處理,比較好分割出辨識物。 若想辨識的物件與背景的RGB值過於接近,也比較好說明此狀況,為什麼較難分割出物件。 成果呈現 第一張圖:左邊為原圖,右邊為分析結果的圖,用其他顏
Thumbnail
在影像辨識中,若遇到物件與背景難以分辨的狀況下,先做一下色彩分析,知道了色彩強度階層上的像素數,有助於了解後續需要做什麼處理,比較好分割出辨識物。 若想辨識的物件與背景的RGB值過於接近,也比較好說明此狀況,為什麼較難分割出物件。 成果呈現 第一張圖:左邊為原圖,右邊為分析結果的圖,用其他顏
Thumbnail
介紹OpenCV中的cv2.matchTemplate和cv2.minMaxLoc函數的使用方法和參數,提供程式範例以及相關特徵匹配的詳細介紹,讓讀者對此有更深入的瞭解。
Thumbnail
介紹OpenCV中的cv2.matchTemplate和cv2.minMaxLoc函數的使用方法和參數,提供程式範例以及相關特徵匹配的詳細介紹,讓讀者對此有更深入的瞭解。
Thumbnail
觀看本文將可以學習到如何利用Numpy求得物件的邊緣點,及算出物件的寬跟高。 有詳細的程式邏輯說明,及各函式用法說明。 綠點及紅點則是採樣到的邊界點,比較粗的點是偵測到的最大值 完整程式碼 import cv2 import numpy as np import matplotl
Thumbnail
觀看本文將可以學習到如何利用Numpy求得物件的邊緣點,及算出物件的寬跟高。 有詳細的程式邏輯說明,及各函式用法說明。 綠點及紅點則是採樣到的邊界點,比較粗的點是偵測到的最大值 完整程式碼 import cv2 import numpy as np import matplotl
Thumbnail
直方圖是對圖像中像素強度分布的圖形表示。通過分析直方圖,我們可以獲得有關圖像對比度、亮度和色彩分佈的有用信息。
Thumbnail
直方圖是對圖像中像素強度分布的圖形表示。通過分析直方圖,我們可以獲得有關圖像對比度、亮度和色彩分佈的有用信息。
Thumbnail
廢話不多說,先上成果圖。 成果圖 主要實現方法 1.灰階後利用cv2.Canny找物體的邊緣 2.找物件相對應的直線cv2.HoughLines 3.分類為橫向和垂直的直線角度,求得相對於物件的旋轉角度 4.根據算出的相對應旋轉角度將物件轉正
Thumbnail
廢話不多說,先上成果圖。 成果圖 主要實現方法 1.灰階後利用cv2.Canny找物體的邊緣 2.找物件相對應的直線cv2.HoughLines 3.分類為橫向和垂直的直線角度,求得相對於物件的旋轉角度 4.根據算出的相對應旋轉角度將物件轉正
Thumbnail
涉及圖像處理和計算機視覺時,色彩空間轉換是一個常見操作,應用如下: 降維: 將一張彩色圖像轉換為灰度圖像可以減少數據的維度,簡化處理過程,同時在某些情況下保留重要的視覺信息。 突顯特徵: 在某些情況下,某些色彩通道可能包含冗餘或不必要的信息,通過轉換到其他色彩空間,可以更好地突顯圖像中的重要特徵
Thumbnail
涉及圖像處理和計算機視覺時,色彩空間轉換是一個常見操作,應用如下: 降維: 將一張彩色圖像轉換為灰度圖像可以減少數據的維度,簡化處理過程,同時在某些情況下保留重要的視覺信息。 突顯特徵: 在某些情況下,某些色彩通道可能包含冗餘或不必要的信息,通過轉換到其他色彩空間,可以更好地突顯圖像中的重要特徵
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News