cv2.VideoCapture.open() always returns FALSE

user26641 picture user26641 · Feb 15, 2014 · Viewed 52.8k times · Source

I am trying to access a Logitech c310 webcam on my beaglebone. It always returns false for any device ID, I am not sure why.

I use the following code.

>>> import cv2, numpy as np
>>> cam = cv2.VideoCapture(0)
>>> cam.open(0)
False

The camera does show up as video0 in dev/ and also in root@arm:~#lsusb, like below,

root@arm:~# lsusb
Bus 001 Device 002: ID 046d:081b Logitech, Inc. Webcam C310
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

I could also access the camera with v4l2-ctl. Note that I am very new to OpenCV, so this may sound silly and I apologize for that in advance.

Answer

kaushik94 picture kaushik94 · Feb 17, 2014
HIGHGUI ERROR: V4L: index 1 is not correct!
False
OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array  type) in cvGetMat, file /home/kaushik/Desktop/OpenCV-2.4.1/modules/core/src/array.cpp, line 2482
Traceback (most recent call last):
File "x2.py", line 8, in <module>
cv2.imshow('frame', frame)
cv2.error: /home/kaushik/Desktop/OpenCV-2.4.1/modules/core/src/array.cpp:2482: error: (-206) Unrecognized or unsupported array type in function cvGetMat

if you are getting this kind of an error then probably something is wrong with the indexing.

instead of cv2.VideoCapture(0) add:

cv2.VideoCapture(-1)

this will get you the first working camera. And if anything goes wrong, just post the stack trace here and i'll see if i can help you :)