我想將我的圖像分析腳本之一從Mathematica移植到Python OpenCV,但是我遇到了涉及的某個函數的問題。OpenCV簡單的Blob檢測器沒有檢測到所有的斑點
我設法將圖像進行二值化和分水嶺化,就像Mathematica中的一樣。但是,篩選連接組件的屬性的步驟似乎無法正常工作。
輸入圖像是如下:
然而,我試圖運行下面的代碼:
import cv2
import numpy as np
img = cv2.imread('test2.4.png', 1)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Set up the detector and configure its params.
params = cv2.SimpleBlobDetector_Params()
params.minDistBetweenBlobs = 0
params.filterByColor = True
params.blobColor = 255
params.filterByArea = True
params.minArea = 10
params.maxArea = 300000
params.filterByCircularity = False
params.filterByConvexity = False
params.filterByInertia = True
params.minInertiaRatio = 0.01
params.maxInertiaRatio = 1
detector = cv2.SimpleBlobDetector_create(params)
# Detect blobs.
keypointsb = detector.detect(img)
# Draw detected blobs as red circles.
im_with_keypoints = cv2.drawKeypoints(img, keypointsb, np.array([]), (0,0,255), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
# Show keypoints
cv2.imwrite('test3.png',im_with_keypoints)
如該代碼所示,我已經爲團塊的參數檢測儘可能寬容。然而,大部分的斑點沒有被檢測到,也沒有檢測到分水斑點。
我檢查了documentation for the function,並調整了其中的大部分閾值和repeatability(因爲圖像已經被二進制化)。爲了讓函數能夠檢測到所有的斑點,是否還有其他配置需要執行?
或者,是否有任何其他最近/孔更新的庫,通過成分測量是能夠過濾的?
@C王驚人的工作我必須嘗試一下:D –