【发布时间】:2022-06-29 03:46:09
【问题描述】:
我想找到红色圆圈。我使用了 opencv2,简单的 Blob 检测器。当我在照片上应用蒙版时,找不到圆圈。它没有错误消息,只是找不到任何圈子。 这就是我得到的-> Founded_blobs。 我的测试照片 -> BlobTest4.jpg。我的代码如下。
import cv2
import numpy as np
img=cv2.imread("BlobTest4.jpg")
rgb=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
lower_red = np.array([95,0,0])
upper_red = np.array([255,90,90])
mask=cv2.inRange(rgb,lower_red,upper_red)
params = cv2.SimpleBlobDetector_Params()
params.filterByCircularity = True
params.minCircularity = 0.85
params.minThreshold = 1
params.maxThreshold = 2000
params.filterByArea = True
params.minArea = 33
params.filterByConvexity = True
params.minConvexity = 0.8
params.filterByInertia = True
params.minInertiaRatio = 0.01
blob=cv2.SimpleBlobDetector_create(params)
blob_coordinate=blob.detect(mask)
blob_coordinate_without_mask=blob.detect(img)
founded_blobs=cv2.drawKeypoints(mask,blob_coordinate,np.array([]),(0,255,0),cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
founded_blobs_without_mask=cv2.drawKeypoints(img,blob_coordinate2,np.array([]),(0,255,0),cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
cv2.namedWindow("mask",cv2.WINDOW_NORMAL)
cv2.namedWindow("founded_blobs_with_mask",cv2.WINDOW_NORMAL)
cv2.namedWindow("founded_blobs_without_mask",cv2.WINDOW_NORMAL)
cv2.imshow("founded_blobs_with_mask",founded_blobs)
cv2.imshow("founded_blobs_without_mask",founded_blobs_without_mask)
cv2.imshow("mask",mask)
cv2.waitKey(0)
cv2.destroyAllWindows
【问题讨论】:
-
你在哪里设置了所有这些
SimpleBlobDetector_Params值,你明白你的意思吗?您是否尝试更改它们以查看效果?您是否尝试阅读文档以更好地理解它们? -
查看输出,它找到了圆圈/斑点,它们用绿色勾勒出来。这里有什么问题?