python and videocapture from webcam [closed]

asked 2014-05-29 06:07:13 -0600

javabien gravatar image

updated 2014-05-29 08:38:21 -0600

Hello,

I'm using different version of OpenCV (2.4.6 to 2.4.9). I try to use videocapture in pyhton.

First I just try to run this code with opencv 2.4.6 binding for python :

exemple code :

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

It's working perfectly. But, If I try to run the same code with the last binding of opencv (2.4.9) I see this error message :

OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cv::cvtColor, file ..\..\..\..\opencv\modules\imgproc\src\color.cpp, line 3737
Traceback (most recent call last):
  File "/videoBasis.py", line 11, in <module>
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.error: ..\..\..\..\opencv\modules\imgproc\src\color.cpp:3737: error: (-215) scn == 3 || scn == 4 in function cv::cvtColor

Can someone help me

OK :

For who are interesting about the answer please see the code below. It's seems that the last version of OpenCV is less flexible the webcam.

import numpy as np
import cv2

isValid = True

captureLeft = cv2.VideoCapture(0)

if not captureLeft.isOpened()  :
    print("can't open the camera")


while(True):
    # Capture frame-by-frame
    try :
        retLeft, frameLeft = captureLeft.read()

    except:
        print("error the take a image")
        isValid = False


    if isValid == True:
        try:
            # Our operations on the frame come here
            grayLeft = cv2.cvtColor(frameLeft, cv2.COLOR_BGR2GRAY)

            # Display the resulting frame
            cv2.imshow('frameLeft',grayLeft)

            if cv2.waitKey(1) & 0xFF == ord('q'):
                break
        except:
            print("Error during the convertion")


# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
edit retag flag offensive reopen merge delete

Closed for the following reason the question is answered, right answer was accepted by sturkmen
close date 2020-10-23 05:25:48.166861