2017-10-06 321 views

回答

0

首先將圖像轉換爲HSV並分離出紅點。然後通過查找輪廓和他們的時刻來獲得它的座標很簡單。如果你正在使用的OpenCV -

輸出:

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

謝謝您的答覆。然而,這不是我正在尋找的。首先,我無法弄清楚這些座標是根據什麼來源計算的!無論如何,我很抱歉在我的問題中沒有提及它,但我想要的是相對於圓點所在圓弧中心的紅點座標(可以說中心的座標是(0,0)。在這種情況下,點(點)的座標應該爲零,因爲它們位於下半部分。我很感謝您再次查看它。 – Leo

+0

您可以查看hough圓[here](http: //opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_houghcircles/py_houghcircles.html)這些可能是一個圓上的點,你可以很容易地得到該圓圈的中心,如鏈接,一旦你有了中心,從打印的座標中減去它,你就可以得到相對於弧中心的座標 –

+0

謝謝,我會按照你所說的去研究Hough Circle Transform,但是我的問題依然存在。你能否澄清一下原產地的位置?你還計算了這些座標相對於X和Y軸? – Leo