Getting openCV error: Assertion Failed

asked 2016-07-23 08:52:54 -0500

I'm using opencv 3.1 in RaspberryPi 3. I,m trying to run the following Hough Circle detection algorithm

! /usr/bin/python

import numpy as np import cv2 from cv2 import cv

VInstance = cv2.VideoCapture(0) key = True

""" params = dict(dp, minDist, circles, param1, param2, minRadius, maxRadius) """ def draw_circles(circles, output):

if circles is not None:

    for i in circles[0,:]:
        #draw the outer circle
        cv2.circle(output,(i[0],i[1]),i[2],(0,255,0),2)
        #draw the centre of the circle
        cv2.circle(output,(i[0],i[1]),2,(0,0,255),3)
        print("The number of circles if %d" %(circles[0].shape[0]))      
elif circles is None:
    print ("The number of circles is 0")

if __name__ == '__main__':

while key:
    ret,img = VInstance.read()
    ## Smooth image to reduce the input noise

    imgGray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    imgSmooth = cv2.GaussianBlur(imgGray,(5,5),3)

    ## Compute Hough Circles
    circles = cv2.HoughCircles(imgSmooth,cv2.cv.CV_HOUGH_GRADIENT,1,100,
                               param1=80,
                               param2=50,
                               minRadius=50,
                               maxRadius=100)
    draw_circles(circles,img)

    ## Display the circles
    cv2.imshow('detected circles',imgGray)
    cv2.imshow("result",img)
    k = cv2.waitKey(1)
    if k == 27:
        cv2.destroyAllWindows()
        break

But I'm getting Assertion Failed error, details are below. OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /home/pi/opencv-3.1.0/modules/imgproc/src/color.cpp, line 8000 Traceback (most recent call last): File "HoughCircles.py", line 70, in <module> imgGray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) cv2.error: /home/pi/opencv-3.1.0/modules/imgproc/src/color.cpp:8000: error: (-215) scn == 3 || scn == 4 in function cvtColor

Can anyone please check and help!

edit retag flag offensive close merge delete

Comments

error means , that your input to cvtColor was invalid / empty.

most probably VInstance.read() returned an empty image / False, because your Capture was not opened.

berak gravatar imageberak ( 2016-07-25 09:16:26 -0500 )edit