2017-10-06 7 views

답변

0

먼저 HSV에 이미지를 변환하고 빨간 점을 구분합니다. 그런 다음 좌표를 얻는 것은 등고선과 그 순간을 찾는 것으로 간단합니다.이

enter image description here

코드 :

import cv2 
import numpy as np 

frame=cv2.imread("dots.jpg") 
dots=np.zeros_like(frame) 
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) 
lower_hsv = np.array([112, 176, 174]) 
higher_hsv = np.array([179,210,215]) 
mask = cv2.inRange(hsv, lower_hsv, higher_hsv) 

cnts, h = cv2.findContours(mask, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE) 
mnts = [cv2.moments(cnt) for cnt in cnts] 

centroids = [(int(round(m['m10']/m['m00'])),int(round(m['m01']/m['m00']))) for m in mnts] 


for c in centroids: 
    cv2.circle(dots,c,5,(0,255,0)) 
    print c 

cv2.imshow('red_dots', dots) 

cv2.waitKey(0) 
cv2.destroyAllWindows() 
+0

당신의 응답을 주셔서 감사합니다

출력 - 경우에 당신은 OpenCV의를 사용하고 있습니다. 그러나 내가 찾던 것이 아니 었습니다. 첫째로, 나는이 좌표가 어떤 원점을 기준으로 계산되었는지 알 수 없었다! 어쨌든, 내 질문에 언급하지 못해 죄송합니다. 점이있는 원호의 중심을 기준으로 빨간색 점의 좌표를 원했습니다 (중심 좌표가 (0,0)이라고 가정 해 보겠습니다). 이 경우 점 (점)의 좌표는 아래쪽 반원에 있기 때문에 0이어야합니다. 다시 한 번 찾아 보니 주셔서 감사합니다 – Leo

+0

[여기] (http : //opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_houghcircles/py_houghcircles.html) 이것은 하나의 원에있는 점일 수 있습니다. 다음과 같이 해당 원뿔의 중심을 쉽게 얻을 수 있습니다. 링크를 만들면 인쇄 된 좌표에서 그 중심을 뺀 다음 원호의 중심에 대한 좌표를 가져옵니다. –

+0

감사합니다. 말씀하신대로 Hough Circle Transform을 살펴 보겠습니다.하지만 내 질문은 여전히 ​​존재합니다. 원산지의 위치를 ​​명확히하고 또한이 좌표를 계산 한 X 축과 Y 축도 있습니까? – Leo