Getting errors while detecting circle [closed]

asked 2016-08-08 05:24:28 -0600

omee gravatar image

updated 2016-08-08 05:36:08 -0600

berak gravatar image

I want to detect blue circles and it's center from the video captured using my webcam. That's why I formed the following code given below: (I am using OpenCV 3.1.0 and PyCharm as an IDE and Anaconda Python 2.7 for 64 bits)

    import cv2
    import numpy as np

    cap = cv2.VideoCapture(0)
    while(True):
        frame, _ = cap.read()
        # blurring the frame that's captured
        frame_gau_blur = cv2.GaussianBlur(frame, (3, 3), 0)
        # converting BGR to HSV
        hsv = cv2.cvtColor(frame_gau_blur, cv2.COLOR_BGR2HSV)
        # the range of blue color in HSV
        lower_blue = np.array([110, 50, 50])
        higher_blue = np.array([130, 255, 255])
        # getting the range of blue color in frame
        blue_range = cv2.inRange(hsv, lower_blue, higher_blue)
        # getting the V channel which is the gray channel
        blue_s_gray = blue_range[::2]
        # applying HoughCircles
        circles = cv2.HoughCircles(blue_s_gray, cv2.HOUGH_GRADIENT, 1, 10, 100, 30, 5, 50)
        circles = np.uint16(np.around(circles))
        for i in circles[0,:]:
            # drawing on detected circle and its center
            cv2.circle(frame,(i[0],i[1]),i[2],(0,255,0),2)
            cv2.circle(frame,(i[0],i[1]),2,(0,0,255),3)
         cv2.imshow('circles', frame)
        k = cv2.waitKey(5) & 0xFF
        if k == 27:
        break
    cv2.destroyAllWindows()

But after running the code I get an error. And the error is:

OpenCV Error: Assertion failed (depth == CV_8U || depth == CV_16U || depth == CV_32F) in cv::cvtColor, file C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\imgproc\src\color.cpp, line 7935 Traceback (most recent call last): File "C:/Users/Meliodas/PycharmProjects/OpenCV_By_Examples/code_tester.py", line 10, in <module> hsv = cv2.cvtColor(frame_gau_blur, cv2.COLOR_BGR2HSV) cv2.error: C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\imgproc\src\color.cpp:7935: error: (-215) depth == CV_8U || depth == CV_16U || depth == CV_32F in function cv::cvtColor

How do i solve this error? Thanks a lot in advance, for being so kind to help me.

edit retag flag offensive reopen merge delete

Closed for the following reason question is not relevant or outdated by sturkmen
close date 2020-10-03 04:27:33.850728

Comments

please check for cap.isOpened() , frame != None or _ != False , to make sure, you actually read an image from your capture

berak gravatar imageberak ( 2016-08-08 05:32:59 -0600 )edit

(lesson2: never throw away return values ...)

berak gravatar imageberak ( 2016-08-08 05:33:50 -0600 )edit

yeah I checked for cap.isOpened() but it still ain't working! okay, I will try to code better from now on. I am actually very new to this. @berak

omee gravatar imageomee ( 2016-08-08 05:47:08 -0600 )edit

well, somehow, you do not seem to get a frame from your cam, so check other 2

berak gravatar imageberak ( 2016-08-08 05:48:30 -0600 )edit

I already checked all the ports and when I comment out the code for circle detection and just display the detected blue color its showing well that it's detecting blue color. I think there is a problem with my code for circle detection. @berak

omee gravatar imageomee ( 2016-08-08 06:07:32 -0600 )edit

wait, do you still get the error msg above ?

(if not, then its problem #2 now)

berak gravatar imageberak ( 2016-08-08 06:09:41 -0600 )edit

yeah I still get the error message above after I added the code for detecting circles. @berak

omee gravatar imageomee ( 2016-08-08 06:14:33 -0600 )edit

Can you please help me solve the problem? @berak

omee gravatar imageomee ( 2016-08-08 06:15:29 -0600 )edit