關(guān)于OpenCV中使用cv2.SimpleBlobDetector來進(jìn)行斑點(diǎn)檢測(cè)说敏,你可以用來進(jìn)行一些固定場(chǎng)景的檢測(cè)使用鸥跟,你可以通過設(shè)定前面提及的一些參數(shù)范圍來進(jìn)行篩選,這一點(diǎn)是很方便的。
# 利用區(qū)域的圓度來進(jìn)行檢測(cè)
import cv2
import numpy as np
img = cv2.imread('steel.png',-1)
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
bin_img = cv2.threshold(gray_img, 70, 255, cv2.THRESH_BINARY_INV)[1]
params = cv2.SimpleBlobDetector_Params()
#表示提取白色的色塊医咨,若需要提取黑色色塊可以用0
params.blobColor = 255
#二值化的起始閾值
params.minThreshold = 0
#二值化的終止閾值
params.maxThreshold = 255
#控制blob的區(qū)域面積大小
params.filterByArea = True
params.minArea = 200
params.maxArea = 30000
#blob的圓度限制枫匾,默認(rèn)為不限制,通常不限制拟淮,除非找圓形特征
params.filterByCircularity = True
#blob最小的圓度
params.minCircularity = 0.6
#blob的凸性
params.filterByConvexity = False
params.minConvexity = 0.7
#blob的慣性率干茉, 圓為1, 線為0很泊, 大多數(shù)情況介于[0 ,1]之間
params.filterByInertia = False
params.minInertiaRatio = 0.7
params.minDistBetweenBlobs = 5#最小的斑點(diǎn)距離角虫,不同的二值圖像斑點(diǎn)小于該值時(shí)將被認(rèn)為是同一個(gè)斑點(diǎn)
params.minRepeatability= 2
detector=cv2.SimpleBlobDetector_create(params)
keypoints=detector.detect(bin_img)
for keypoint in keypoints:
x, y = np.int64(keypoint.pt[0]), np.int64(keypoint.pt[1])
cv2.circle(img,(x, y), 15, (255, 25, 25), 2)
cv2.putText(img, 'Pipe Count:' + repr(len(keypoints)), (0, 20), cv2.FONT_HERSHEY_SIMPLEX,0.8,(255, 25, 255), 2)
cv2.imshow('blob_detector', img)
cv2.imshow('bin_img', bin_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
相關(guān)博客:基于SimpleBlobDetector識(shí)別骰子點(diǎn)數(shù)https://cloud.tencent.com/developer/article/1571914
鋼管計(jì)數(shù)軟件設(shè)計(jì)(OpenCV+Qt實(shí)現(xiàn)): https://www.bilibili.com/video/av625557526,這里用的是圓檢測(cè),圓可以看作是斑的一種特殊情況委造,雖然需要輔助來糾正檢測(cè)錯(cuò)誤的目標(biāo)戳鹅,但能夠幫助解決數(shù)重的問題,還是非常有意義的
你需要根據(jù)需要進(jìn)行預(yù)處理昏兆,尤其是環(huán)境復(fù)雜的情況枫虏,盡量排除外界環(huán)境干擾,預(yù)處理分割的效果直接影響B(tài)lob檢測(cè)爬虱。用blob來檢測(cè)目標(biāo)有一點(diǎn)是優(yōu)點(diǎn)也是缺點(diǎn)隶债,你要檢測(cè)的目標(biāo)不一定非得特定的形狀,圓的跑筝,方的死讹,橢圓的,甚至不規(guī)則都行曲梗,就是你需要使得它們彼此之間不連通赞警。有時(shí)候往往你為了不連通而去膨脹目標(biāo)區(qū)域,容易消除干擾虏两,同時(shí)也會(huì)丟失一些信息仅颇,比如目標(biāo)的邊界,用來計(jì)數(shù)應(yīng)用應(yīng)該是足夠了的碘举。
關(guān)于斑點(diǎn)檢測(cè),最先接觸到是OpenMV搁廓,一款開源的機(jī)器視覺模塊引颈,里面的斑點(diǎn)檢測(cè)著實(shí)不錯(cuò),速度快境蜕,開發(fā)容易上手蝙场。
關(guān)于OpenCV中的斑點(diǎn)檢測(cè)問題請(qǐng)?jiān)谠u(píng)論區(qū)留言.Have Fun With OpenCV-Python, 下期見。