2017-11-07 154 views
1

画像内の検出されたブロブを白色で塗りつぶしたいと思います。検出されたブロブを塗りつぶします(OpenCV、Python)

# Standard imports 
import cv2 
import numpy as np 

# Read image 
im = cv2.imread("5.tif", cv2.IMREAD_GRAYSCALE) 

# Setup SimpleBlobDetector parameters. 
params = cv2.SimpleBlobDetector_Params() 

# Change thresholds 
params.minThreshold = 10 
params.maxThreshold = 200 

# Filter by Area. 
params.filterByArea = True 
params.minArea = 0.01 
params.minArea = 0.05 

# Filter by Circularity 
params.filterByCircularity = True 
params.minCircularity = 0.1 

# Filter by Convexity 
params.filterByConvexity = True 
params.minConvexity = 0.87 

# Filter by Inertia 
params.filterByInertia = True 
params.minInertiaRatio = 0.02 

# Create a detector with the parameters 
ver = (cv2.__version__).split('.') 
if int(ver[0]) < 3: 
    detector = cv2.SimpleBlobDetector(params) 
else: 
    detector = cv2.SimpleBlobDetector_create(params) 

# Detect blobs. 
keypoints = detector.detect(im) 

# Draw detected blobs as red circles. 
# cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS ensures 
# the size of the circle corresponds to the size of blob 

im_with_keypoints = cv2.drawKeypoints(im, keypoints, np.array([]), (0, 0, 255), 
             cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) 

# Show blobs 
cv2.imshow("Keypoints", im_with_keypoints) 
cv2.waitKey(0) 

をこれは私が受けています出力されます:

output

...と、元画像:

src

これは私が使用していたコードですコードはhereから取られました それは非常にうまく説明されていますが、私はどこに "触れる"上記のスクリプトは私が要求しているものを微調整して行います。

おかげで満たされた白い円として

答えて

3

ドローキーポイント:

img = im.copy() 
for x in range(1,len(keypoints)): 
    img=cv2.circle(img, (np.int(keypoints[x].pt[0]),np.int(keypoints[x].pt[1])), radius=np.int(keypoints[x].size), color=(255), thickness=-1) 

編集:その後、長方形や正方形の場合 、:

for i in range(1,len(keypoints)): 
    x,y = np.int(keypoints[i].pt[0]),np.int(keypoints[i].pt[1]) 
    sz = np.int(keypoints[i].size) 
    if sz > 1: 
     sz = np.int(sz/2) 
    # notice there's no boundary check for pt1 and pt2, you have to do that yourself 
    img = cv2.rectangle(img, (x-sz,y-sz), (x+sz,y+sz), color=(255), thickness=-1) 
+0

完璧には、それが仕事をしてくれました。ありがとう。 – BlueTrack

+0

ブロブの形状を変更する方法も知っていますか?例えば、実際の円から二乗されたものから。 – BlueTrack

+1

@BlueTrack編集を参照してください。 – zindarod

関連する問題