Я пытаюсь использовать 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) или осторожное обнаружение краев и должны получить отличные результаты.