video for linux 2
v4L2是针对uvc免驱usb设备的编程框架 ,主要用于采集usb摄像头等
HIGHGUI ERROR: V4L2: Pixel format of incoming image is unsupported by OpenCV Unable to stop the stream.: Bad file descriptor
遇到问题的解释链接:https://www.linuxquestions.org/questions/programming-9/opencv-pixel-format-of-incoming-image-is-unsupported-by-opencv-842801/
Make sure that you have video for linux control panel installed (v4l2ucp) and also ensure that you have the v4l2convert.so in /usr/lib/libv4l/ (it should all be part of the video for linux package I think?
root@localhost~# aptitude install v4l2ucp
then run v4l2ucp, go to preview->configure preview in the video for linux control panel (v4l2ucp) application it should have as the enviroment and application to launch for the view, eg. mplayer or whatever you set it to.
LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so as the environment variable
and tv:// as the argument
the key here is setting v4l2convert.so as a preloader to the viewer, which i think converts the device stream from the camera to a format suitable for v4l2 devices. If you do this before running your opencv application it should fix the problem.
just cd to the directory of your application and type
LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so ./youropencvapp
or you can add it as an environment variable in your launch configuration if you are working with an IDE such as eclipse
Hope this helps someone!