2016-07-28 7 views
0
내 라즈베리 파이로 변환하고 내가 투자 수익 (ROI)을 할 때이 같은 원 대한 확인 호우 원하고 있어요

: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 비트 이미지가되기 위해 투자 수익 (ROI)을 변형하거나

가 사전에 감사합니다 뭔가 다른 오류를 의미 하는가!

편집 : enter image description here

+1

'이미지'를 회색 음영으로 변환 할 수 있습니다. 'cv2.cvtColor (..., COLOR_BGR2GRAY) '사용하기 – Miki

+0

@Miki 그레이 스케일 이미지를 사용하면 또 다른 오류가 발생합니다. – Loanb222

+0

@Miki 아직 라운드에서 같은 오류가 발생합니다. – Loanb222

답변

0

는 도움을 당신에게 미키와 bpachev 감사합니다!

첫 번째 오류는 더 원은 그래서 당신은 if 문이를 추가 할 수있는 오류를 advoid 발견되지 않았 음을 의미한다이

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

그리고 NoneType 오류처럼 그레이 스케일로 변환해야한다는 것을 의미

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

그런 다음 원형이 있다는 것을 알았던 곳에서 원이 발견되지 않아서 탐지기의 설정으로 놀아야 만했습니다.