2016-02-26 101 views
0

我能够识别一个圆形对象。我怎么能打印红色像素的HoughCircle中心点。如果有两个圆圈,我如何通过像素访问?OpenCV&Python:在HoughCircles中打印红点像素值

我的代码是

import cv2 
import numpy as np 
img = cv2.imread('STACK.jpg',0) 
img = cv2.medianBlur(img,1) 
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR) 
circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,3,100,param1=60,param2=80,minRadius=0,maxRadius=0)       
circles = np.uint16(np.around(circles)) 
for i in circles[0,:]: 
    # outer circle 
    cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2) 
    # center of the circle 
    cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),2) 
cv2.imshow('Detected Circle',cimg) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 
+0

你是什么意思“如何我可以打印HoughCircle中心点的颜色为红色的像素“?你想显示圆心的图像原始值,还是显示德坐标? –

+0

显示圆心@Eliezer的坐标 – Sugantharaja

回答

0

你的圈子中的中心像素坐标存储由cv2.HoughLines返回circles变量中。这个数据结构提供了圆的(X,Y)坐标及其半径。

看着你的代码,每个i都会存储一个圆圈。

如果你要的只是显示圆心坐标是什么,你可以在标准输出打印,或利用内幕阵列i值显示他们的形象:

for i in circles[0,:]: 

    x = i[0] 
    y = i[1] 
    radius = i[2] 

    # Draw text in image 
    font = cv2.FONT_HERSHEY_SIMPLEX 
    text = '(' + str(x) + ',' + str(y) + ')' 
    cv2.putText(cimg, text,(x + 5, y - 5), font, 0.5, (0, 125, 255), 2) 

    # Print circle position 
    print 'Circle with radius %.2f is at (%d, %d)' % (radius, x, y) 

    cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2) 
    cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),2)