How do I read a video from a webcam with OpenCV?
I'm following the official documentation, trying to read a video from a webcam. As I run the piece of code from the documentation:
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
it fails with the following output:
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /io/opencv/modules/imgproc/src/color.cpp, line 9748
Traceback (most recent call last):
File "capture.py", line 11, in
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.error: /io/opencv/modules/imgproc/src/color.cpp:9748: error: (-215) scn == 3 || scn == 4 in function cvtColor
Inspecting it further, it appears that:
ret
is always False
. cap.get(3)
(to get the width of the picture) returns 0.0
. cap.isOpened()
, the result is always False
. cap.open(0)
, open
returns False
as well. cap.open("/dev/video0")
changes nothing. cap = cv2.VideoCapture(0)
by cap = cv2.VideoCapture("/dev/video0")
has no effect. Opening /dev/video0
in VLC shows the video from the webcam. When I open Cheese, it also shows the video from the webcam. There is only one camera connected to the PC.
Any suggestions?
You're probably missing FFMPEG. OpenCV needs the codec information to decode the videos, open cameras, etc which ffmpeg provides.
The steps to install FFmpeg on Windows are detailed here http://www.wikihow.com/Install-FFmpeg-on-Windows. Following the Linux equivalent of this might solve your problem
链接地址: http://www.djcxy.com/p/83788.html