繁体   English   中英

OpenCV Hough Circle Transform需要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")

然后,由于在我知道的地方没有发现任何圈子,因此我不得不使用检测器的设置来玩耍。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM