【发布时间】:2021-10-12 15:31:36
【问题描述】:
我尝试使用 python、NumPy 和 OpenCV 来分析下面的图像,并在找到的每个对象上画一个圆圈。这里的想法不是识别错误,而是识别与背景不同的任何对象。
这是我正在使用的代码。
import cv2
import numpy as np
img = cv2.imread('per.jpeg', cv2.IMREAD_GRAYSCALE)
if cv2.__version__.startswith('2.'):
detector = cv2.SimpleBlobDetector()
else:
detector = cv2.SimpleBlobDetector_create()
keypoints = detector.detect(img)
print(len(keypoints))
imgKeyPoints = cv2.drawKeypoints(img, keypoints, np.array([]), (0,0,255), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
status = cv2.imwrite('teste.jpeg',imgKeyPoints)
print("Image written to file-system : ",status)
但问题是我得到的结果只有灰度图像,没有任何计数或红色圆圈,如下所示:
由于我是 OpenCV 和对象识别领域的新手,我无法确定问题所在,非常感谢任何帮助。
【问题讨论】:
-
有了这么好的受控背景,您可以使用背景减法(cv::absdiff 函数)或精明的边缘检测,应该会得到很好的结果。
标签: python python-3.x numpy opencv