Ask Your Question

javabien's profile - activity

2020-10-23 05:25:28 -0600 received badge  Student (source)
2020-02-10 05:46:47 -0600 received badge  Famous Question (source)
2016-03-19 12:03:41 -0600 received badge  Notable Question (source)
2015-05-16 10:40:29 -0600 received badge  Popular Question (source)
2014-05-29 07:41:45 -0600 received badge  Editor (source)
2014-05-29 06:07:13 -0600 asked a question python and videocapture from webcam

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()