円の色の中心を取得するコードにもう 1 つの目が必要です。なんらかの理由で、すべてのセンターでほぼ同じ値が返されますが、これは正しくありません。サークルの結果:
センターカラー: [126 126 126] ポイント x: 502 y: 440
センターカラー [124 124 124] ポイント x: 502 y: 516
センターカラー [133 133 133] ポイント x: 502 y: 596
センターカラー [116 116 116] ポイント x: 504 y: 306
センターカラー [119 119 119] ポイント x: 504 y: 366
入力イメージを以下に示します。明らかに、黒丸の平均 RBG は 100 よりもはるかに低い範囲であるため、非常に異なる値が存在するはずです。
下の画像は、コードが円と円の中心を正しく見つけていることを示しています (緑色でマークされています)。正しい中心の色の値が見つからないだけです。
以下のコード:
import cv2
import numpy as np
from math import sqrt
# Open
img = cv2.imread('test1.jpg',0)
# Process
img = cv2.medianBlur(img,5)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
# Find Interest
circles = cv2.HoughCircles(img,cv2.cv.CV_HOUGH_GRADIENT,1,20,
param1=50,param2=30,minRadius=1,maxRadius=20)
circles = np.uint16(np.around(circles))
# Post Process
for i in circles[0,:]:
# draw the outer circle
cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
# draw the center of the circle
cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)
print "Center Colour"
print cimg[i[0], i[1]]
print "Point"
print "x: "+str(i[0]) + " y: " + str(i[1])
cv2.imwrite('output.png',cimg)