OpenCV 霍夫圆变换需要 8 位图像
OpenCV Hough Circle Transform needs 8-bit image
我正在使用我的 RaspberryPi 使用 Hough Circle Transform,当我使用 ROI 来检查这样的圆时:
for (x,y,w,h) in trafficLights:
cv2.rectangle(image,(x,y),(x+w,y+h),(0,0,255),2)
roi = image[y:y+h,x:x+w]
roi = cv2.medianBlur(roi,5)
circles = cv2.HoughCircles(roi,cv2.HOUGH_GRADIENT,1,20,
param1=50,param2=60,minRadius=0,maxRadius=0)
circles = numpy.uint16(numpy.around(circles))
for i in circles[0,:]:
if i[2] < 100:
cv2.circle(image,(i[0],i[1]),i[2],(0,255,0),2)
cv2.circle(image,(i[0],i[1]),2,(0,0,255),3)
if i[1] > 315:
print "Green Light"
else:
print "Red Light"
我收到这个错误
The source image must be 8-bit, single-channel in function cvHoughCircles
如何将 ROI 转换为 8 位图像,或者错误是否意味着其他内容
提前致谢!
编辑:
感谢 Miki 和 bpachev 的帮助!
第一个错误的意思是需要像这样转成灰度
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
并且 NoneType 错误意味着没有找到圆圈,因此为了避免错误,您可以添加此 if 语句
if circles is not None:
circles = numpy.round(circles[0, :]).astype("int")
然后因为在我知道有圆圈的地方没有找到圆圈,所以我不得不调整检测器的设置。
我正在使用我的 RaspberryPi 使用 Hough Circle Transform,当我使用 ROI 来检查这样的圆时:
for (x,y,w,h) in trafficLights:
cv2.rectangle(image,(x,y),(x+w,y+h),(0,0,255),2)
roi = image[y:y+h,x:x+w]
roi = cv2.medianBlur(roi,5)
circles = cv2.HoughCircles(roi,cv2.HOUGH_GRADIENT,1,20,
param1=50,param2=60,minRadius=0,maxRadius=0)
circles = numpy.uint16(numpy.around(circles))
for i in circles[0,:]:
if i[2] < 100:
cv2.circle(image,(i[0],i[1]),i[2],(0,255,0),2)
cv2.circle(image,(i[0],i[1]),2,(0,0,255),3)
if i[1] > 315:
print "Green Light"
else:
print "Red Light"
我收到这个错误
The source image must be 8-bit, single-channel in function cvHoughCircles
提前致谢!
编辑:
感谢 Miki 和 bpachev 的帮助!
第一个错误的意思是需要像这样转成灰度
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
并且 NoneType 错误意味着没有找到圆圈,因此为了避免错误,您可以添加此 if 语句
if circles is not None:
circles = numpy.round(circles[0, :]).astype("int")
然后因为在我知道有圆圈的地方没有找到圆圈,所以我不得不调整检测器的设置。