【发布时间】:2019-01-27 05:19:15
【问题描述】:
我正在尝试从HoughCircles 检测检测到的圆圈中心的颜色。我这样做的方式如下:
print("Center of the circle: ", i[0]," ", i[1])
print(ci[i[0]][i[1]][0]," blue")
print(ci[i[0]][i[1]][1]," green")
print(ci[i[0]][i[1]][2]," red")
这里ci 是opencv 图像数组,i[0] 和i[1] 表示圆的中心坐标,如下面代码中HoughCircles 给出的那样。
但是当我这样做时,我得到一个错误提示。
IndexError: index 1034 is out of bounds for axis 0 with size 600
我不明白这是为什么。我正在尝试检测圆心的颜色。
import cv2
import numpy as np
import sys
import math
img = cv2.imread("images/diffc.jpeg", 0)
ci = cv2.imread("images/diffc.jpeg")
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
minDist = 150
param1 = 120
param2 = 37
minRadius = 120
maxRadius = 140
circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,minDist,
param1=param1,param2=param2,minRadius=minRadius,maxRadius=maxRadius)
if circles is None:
print("No circles detected!")
sys.exit(-1)
circles = np.uint16(np.around(circles))
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 of the circle: ", i[0]," ", i[1])
# STATEMENTS THAT THROW ERROR
print(ci[i[0]][i[1]][0]," blue")
print(ci[i[0]][i[1]][1]," green")
print(ci[i[0]][i[1]][2]," red")
cv2.imshow('detected circles',cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()
图片如下: Image
【问题讨论】:
-
请附上您输入的图片
-
@NisheetPatel 在我的问题中添加了图片:i.stack.imgur.com/q3tJj.jpg
-
@NisheetPatel 另外如何检测圆心的颜色?
标签: python opencv image-processing computer-vision hough-transform