2016-07-28 89 views
0

我與霍夫圈工作變換與我的樹莓派,當我乘坐的投資回報率,以檢查圈是這樣的:OpenCV的霍夫圓變換需要8位圖像

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 

enter image description here 我怎麼能改造的投資回報率成爲8位圖像或根本錯誤的意思是別的東西

預先感謝您!

編輯:

enter image description here

+1

你可以將圖像轉換爲灰度。使用'cv2.cvtColor(...,COLOR_BGR2GRAY)' – Miki

+0

@Miki當我使用灰度圖像時,它給了我另一個錯誤,我用圖片提出了我的問題。 – Loanb222

+0

@Miki它仍然給與一輪相同的錯誤。 – Loanb222

回答

0

謝謝三木bpachev的幫助!

第一個錯誤意味着你需要將其轉換爲灰度這樣

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 

而且NoneType錯誤意味着沒有哪個圈子會發現這麼advoid可以if語句添加此錯誤

if circles is not None: 
    circles = numpy.round(circles[0, :]).astype("int") 

然後,因爲沒有找到圈子,我知道那裏有圈子,我不得不玩弄探測器的設置。