[英]Tagging Blob detection on original image via OpenCV
I want to tag on the original image with the blobs that are found.我想用找到的 blob 标记原始图像。 But whenever I do the blob detection it only will make a new image like this:
但是每当我进行斑点检测时,它只会制作一个像这样的新图像:
Outcome image after blob: blob 后的结果图像:
However, I want to show the original image with the red tagging on it.但是,我想显示带有红色标记的原始图像。 Original image:
原图:
I just use the regular code for the blob detection.我只是使用常规代码进行斑点检测。 Is there another way to do the red circles on the original image?
还有另一种方法可以在原始图像上做红色圆圈吗? So its clear where they are.
所以很清楚他们在哪里。
im_gray = cv2.imread(img,cv2.IMREAD_GRAYSCALE)
(thresh, im_bw) = cv2.threshold(im_gray, 128, 255,cv2.THRESH_BINARY |
cv2.THRESH_OTSU)
thresh = 50
im_bw = cv2.threshold(im_gray, thresh, 255, cv2.THRESH_BINARY)[1]
#detect blobs based on features
params = cv2.SimpleBlobDetector_Params()
# Filter by Area.
params.filterByArea = True
params.minArea = 70
params.maxArea = 150
# Filter by Color (black=0)
params.filterByColor = False # Set true for cast_iron as we'll be detecting black regions
params.blobColor = 0
# Filter by Circularity
params.filterByCircularity = True
params.minCircularity = 0.5
params.maxCircularity = 1
# Filter by Convexity
params.filterByConvexity = True
params.minConvexity = 0.5
params.maxConvexity = 1
# Filter by InertiaRatio
params.filterByInertia = True
params.minInertiaRatio = 0.3
params.maxInertiaRatio = 0.9
# Distance Between Blobs
params.minDistBetweenBlobs = 0
#thresholded to value 70 detecting blobs:
detector = cv2.SimpleBlobDetector_create(params)
keypoints = detector.detect(im_bw)
print("Number of blobs detected are : ", len(keypoints))
#detect blobs: missing the detection based on features
im_with_keypoints = cv2.drawKeypoints(im_bw, keypoints, numpy.array([]), (0, 0, 255),
cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
Your problem is your last line:你的问题是你的最后一行:
im_with_keypoints = cv2.drawKeypoints(im_bw, keypoints, numpy.array([]), (0, 0, 255),
cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
Here you draw your key points on im_bw
, which is not your original image but your thresholded image.在这里,您在
im_bw
上绘制关键点,这不是您的原始图像,而是您的阈值图像。 If you replace im_bw
here with your original image (eg use your grayscale version you already loaded as im_gray
) you should get your desired result.如果您在此处将
im_bw
替换为您的原始图像(例如,使用您已经加载为im_gray
的灰度版本),您应该会得到您想要的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.