VIDEOIO ERROR: V4L2: Pixel format of incoming image is unsupported by OpenCV Unable to stop the stream: Device or resource busy

Running a private code that reads the data from the Webcam, I get the following error:

Loading weights from handyolo/weights/000010.weights... Done!
INFO:exp11_fm64_iter1_l2_rmsprop_feaadd_zrel3_transformer_Test:Creating instance of the ImageHeatmapsPose2dZrelZAll_FPN model.
INFO:exp11_fm64_iter1_l2_rmsprop_feaadd_zrel3_transformer_Test:n_iter: 1
INFO:exp11_fm64_iter1_l2_rmsprop_feaadd_zrel3_transformer_Test:improvement_per_itr: 0.01
INFO:exp11_fm64_iter1_l2_rmsprop_feaadd_zrel3_transformer_Test:beta: 5.0
INFO:exp11_fm64_iter1_l2_rmsprop_feaadd_zrel3_transformer_Test:Creating instance of L1 Loss.
VIDEOIO ERROR: V4L2: Pixel format of incoming image is unsupported by OpenCV
Unable to stop the stream: Device or resource busy
Error getting frame from device 0

Here is the camera info:

$ v4l2-ctl -d /dev/video0 --all
Driver Info (not using libv4l2): Driver name : uvcvideo Card type : HD Pro Webcam C920 Bus info : usb-0000:00:14.0-9 Driver version: 4.13.13 Capabilities : 0x84200001 Video Capture Streaming Extended Pix Format Device Capabilities Device Caps : 0x04200001 Video Capture Streaming Extended Pix Format
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture: Width/Height : 320/180 Pixel Format : 'YUYV' Field : None Bytes per Line : 640 Size Image : 115200 Colorspace : sRGB Transfer Function : Default YCbCr Encoding : Default Quantization : Default Flags :
Crop Capability Video Capture: Bounds : Left 0, Top 0, Width 320, Height 180 Default : Left 0, Top 0, Width 320, Height 180 Pixel Aspect: 1/1
Selection: crop_default, Left 0, Top 0, Width 320, Height 180
Selection: crop_bounds, Left 0, Top 0, Width 320, Height 180
Streaming Parameters Video Capture: Capabilities : timeperframe Frames per second: 30.000 (30/1) Read buffers : 0 brightness (int) : min=0 max=255 step=1 default=128 value=128 contrast (int) : min=0 max=255 step=1 default=128 value=128 saturation (int) : min=0 max=255 step=1 default=128 value=128 white_balance_temperature_auto (bool) : default=1 value=1 gain (int) : min=0 max=255 step=1 default=0 value=132 power_line_frequency (menu) : min=0 max=2 default=2 value=2 white_balance_temperature (int) : min=2000 max=6500 step=1 default=4000 value=3255 flags=inactive sharpness (int) : min=0 max=255 step=1 default=128 value=128 backlight_compensation (int) : min=0 max=1 step=1 default=0 value=0 exposure_auto (menu) : min=0 max=3 default=3 value=3 exposure_absolute (int) : min=3 max=2047 step=1 default=250 value=333 flags=inactive exposure_auto_priority (bool) : default=0 value=1 pan_absolute (int) : min=-36000 max=36000 step=3600 default=0 value=0 tilt_absolute (int) : min=-36000 max=36000 step=3600 default=0 value=0 focus_absolute (int) : min=0 max=250 step=5 default=0 value=0 flags=inactive focus_auto (bool) : default=1 value=1 zoom_absolute (int) : min=100 max=500 step=1 default=100 value=100 led1_mode (menu) : min=0 max=3 default=0 value=3 led1_frequency (int) : min=0 max=255 step=1 default=0 value=0
$ v4l2-ctl -d /dev/video0 --list-formats
ioctl: VIDIOC_ENUM_FMT Index : 0 Type : Video Capture Pixel Format: 'YUYV' Name : YUYV 4:2:2 Index : 1 Type : Video Capture Pixel Format: 'H264' (compressed) Name : H.264 Index : 2 Type : Video Capture Pixel Format: 'MJPG' (compressed) Name : Motion-JPEG

How can I fix this?

Also, trying to get the video from guvcview I get the following error:

$ guvcview
GUVCVIEW: version 2.0.2
GUVCVIEW: couldn't open /home/mona/.config/guvcview2/video0 for read: No such file or directory
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: No such file or directory
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: No such file or directory
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: No such file or directory
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: No such file or directory
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: No such file or directory
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: No such file or directory
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: No such file or directory
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: No such file or directory
V4L2_CORE: (UVCIOC_CTRL_MAP) Error: No such file or directory
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_route.c:867:(find_matching_chmap) Found no matching channel map
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for 4294967295, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for 4294967295, skipping unlock
libv4l2: error setting pixformat: Device or resource busy
V4L2_CORE: (VIDIOC_S_FORMAT) Unable to set format: Device or resource busy
GUCVIEW: could not set the defined stream format
GUCVIEW: trying first listed stream format
libv4l2: error setting pixformat: Device or resource busy
V4L2_CORE: (VIDIOC_S_FORMAT) Unable to set format: Device or resource busy
GUCVIEW: also could not set the first listed stream format
GUVCVIEW: Video capture failed
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
V4L2_CORE: (VIDIOC_S_PARM) error: Device or resource busy
V4L2_CORE: Unable to set 1/30 fps
GUVCVIEW: (status) saving video to /home/mona/my_video-1.mkv
ENCODER: add stream 0 to stream list
ENCODER: add stream 1 to stream list
ENCODER: (matroska) add seekhead entry 0 (max 10)
ENCODER: (matroska) add seekhead entry 1 (max 10)
AUDIO: (portaudio) Aborting audio stream
AUDIO: Closing audio stream...
ENCODER: (matroska) closing context
ENCODER: (matroska) closing cluster
ENCODER: (matroska)write seekhead
ENCODER: (matroska) end duration = 6922 (6922.000000)
^CGUVCVIEW Caught signal 2
^CGUVCVIEW Caught signal 2

so far unplugged and plugged back the Webcam, used cheese and now I get video:

$ cheese &

But now, running the code I get this new error:

VIDEOIO ERROR: V4L: index 0 is not correct!
Error getting frame from device 0

Before this, the camera light was blue and now it has no light turned on.

so my Webcam is on device 014 and I use it for video capture in OpenCV:

$ sudo lsusb | grep -i cam
Bus 003 Device 014: ID 046d:082d Logitech, Inc. HD Pro Webcam C920

Here is the code:

if USE_CAMERA: cap = cv.VideoCapture(args.device)

And I pass 014 as argument to it. I get this error:

VIDEOIO ERROR: V4L: index 14 is not correct!
Error getting frame from device 14

3 Answers

First unplugged and plugged the Webcam USB and then used the following command to find which device number is the Webcam and used the appropriate port number:

$ ls /dev/video*
/dev/video1

In my case it was OpenCV version issue. I downgraded its version from 4.0 to 3.4 and it worked for me. Since I installed my OpenCv with pip before, I downgraded it in the following way:

pip uninstall opencv-python
pip install opencv-python==3.4.0.12
0

The reason for this error is OpenCV not releasing the camera. when you start capturing camera frames using cap= cv2.VideoCapture(0)and release the camera with cap.release() in background our camera is still working.

one method to again use the camera without an error is simply rebooting Ubuntu.

if you do not want to reboot every time you run the code, what you can do is raising a KeyboardInterrupt at the very end of the code by raise KeyboardInterruptthis way the camera stream is properly closed. this may be not the safest way. but this works.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like