python and videocapture from webcam [closed]
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()