Обнаружение точек в силуэте с помощью houghCircles (OpenCV и Python) - PullRequest
0 голосов
/ 01 июня 2019

Я пытаюсь определить точки на изображении силуэта, используя кружки (). Я пытался изменить его параметры, но это неэффективно при поиске точек, и я также пытался применить некоторые методы OpenCV, но у меня нет точного определения точек

Это оригинальное изображение:
enter image description here

Применение методов и конечный результат: изображение с функциями (слева), результаты обнаружения (справа)

enter image description here

А это мой код:

import numpy as np
import cv2

im = cv2.imread('silhouette.jpg')
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret0,thresh0 = cv2.threshold(imgray,180,200,cv2.THRESH_TRUNC)

ret,thresh = cv2.threshold(thresh0,40,255,cv2.THRESH_BINARY)

kernel = np.ones((2, 2), np.uint8)
mask = cv2.erode(thresh, kernel, iterations=2)
mask = cv2.GaussianBlur(mask,(7,7),0)

circles = cv2.HoughCircles(mask,cv2.HOUGH_GRADIENT,2,6,
                        param1=50,param2=8,minRadius=1,maxRadius=13)

imgray = cv2.cvtColor(imgray, cv2.COLOR_GRAY2BGR) 

if circles is not None:
    circles = np.uint16(np.around(circles))

for i in circles[0,:]:
    cv2.circle(imgray,(i[0],i[1]),i[2],(0,255,0),2)
    # draw the center imof the circle
    cv2.circle(imgray,(i[0],i[1]),2,(0,0,255),2)


cv2.imshow('detecion', imgray)
cv2.waitKey(0)
cv2.destroyAllWindows()

Пожалуйста, есть идеи по улучшению обнаружения точек?

...