Ask Your Question
0

VIDEOIO ERROR: V4L2: Pixel format of incoming image is unsupported by OpenCV

asked 2020-02-17 10:00:33 -0600

firebladed gravatar image

updated 2020-02-19 09:55:13 -0600

I have a AMG88xx infrared camera attached to a raspberry PI 4 i am using the linux video-i2c driver the driver appears to work correctly

i can get output to hdmi frame buffer using ffmpeg

ffmpeg -f rawvideo -pixel_format gray12 -video_size "8x8" -i /dev/video0 -vf histeq,scale=200:200 -f fbdev -pix_fmt bgra /dev/fb0

however when i try to use openCV in python i get

>>> import cv2
>>> capture = cv2.VideoCapture(0)
VIDEOIO ERROR: V4L2: Pixel format of incoming image is unsupported by OpenCV
VIDEOIO ERROR: V4L: can't open camera by index 0

output from v4l2-ctl -d /dev/video0 --all

Driver Info:
    Driver name      : video-i2c
    Card type        : I2C 1-104 Transport Video
    Bus info         : I2C:1-104
    Driver version   : 4.19.102
    Capabilities     : 0x85200001
            Video Capture
            Read/Write
            Streaming
            Extended Pix Format
            Device Capabilities
    Device Caps      : 0x05200001
            Video Capture
            Read/Write
            Streaming
            Extended Pix Format
Priority: 2
Video input : 0 (Camera: ok)
Format Video Capture:
    Width/Height      : 8/8
    Pixel Format      : 'Y12 ' (12-bit Greyscale)
    Field             : None
    Bytes per Line    : 16
    Size Image        : 128
    Colorspace        : Raw
    Transfer Function : Default (maps to None)
    YCbCr/HSV Encoding: Default (maps to ITU-R 601)
    Quantization      : Default (maps to Full Range)
    Flags             :
Streaming Parameters Video Capture:
    Capabilities     : timeperframe
    Frames per second: 10.000 (10/1)
    Read buffers     : 1

Do I need to build OpenCV with additional support? or somehow convert the pixelformat?

i think there might be an issue with maping of video4linux y12 pixelformat definition and ffmpeg pixel definitions

as far as i can tell video4linux support is compiled in

Video I/O:
DC1394:                      NO
FFMPEG:                      YES
  avcodec:                   YES (58.35.100)
  avformat:                  YES (58.20.100)
  avutil:                    YES (56.22.100)
  swscale:                   YES (5.3.100)
  avresample:                NO
GStreamer:                   NO
v4l/v4l2:                    YES (linux/videodev2.h)

edit:

i believe i may have identified the source of the problem

looking in link text

both V4L2_PIX_FMT_Y10 and V4L2_PIX_FMT_Y16 are present but V4L2_PIX_FMT_Y12 is missing along with several other places

from the descriptions of the pixel formats

it appears that y12 could be handled similar to y10 both are stored in 16bit words padded with zeroes

i could try adding it but i don't know where else modification would be required

have created an issue on github

edit retag flag offensive close merge delete

Comments

I do not have one. Try this dev/video10 or dev/video11. If not try this:

capture = cv2.VideoCapture(0)
capture.release(0)
capture = cv2.VideoCapture(0)
supra56 gravatar imagesupra56 ( 2020-02-17 14:33:32 -0600 )edit
1

video10, 11 12 are for the bcm2835 CSI camera which i don't have and release() doesn't help

firebladed gravatar imagefirebladed ( 2020-02-18 07:24:46 -0600 )edit

You are using raspberry pi 4b. your is BCM2711. Don't used bcm2835. Are you using LCD? But AMG88xx is 12c. is that irght?

supra56 gravatar imagesupra56 ( 2020-02-18 07:48:10 -0600 )edit
supra56 gravatar imagesupra56 ( 2020-02-18 07:57:16 -0600 )edit

You have to used chmod to executed filename. You have to used crontab.

supra56 gravatar imagesupra56 ( 2020-02-18 08:45:27 -0600 )edit
1

sorry i just pulled the info from video10,11,12 from v4l2-ctl -d /dev/video?? --all which says "bcm2835-codec" forgot that isn't actually a bcm2835 chip but the kernel drivers just call it that

yes the AMG88xx is an I2C device which only outputs Y12 pixel format so i either need to fix the compatibility or convert it

firebladed gravatar imagefirebladed ( 2020-02-18 09:11:56 -0600 )edit

1 answer

Sort by ยป oldest newest most voted
1

answered 2020-02-28 15:40:23 -0600

firebladed gravatar image

Issue was related to missing pixel format in OpenCV fixed by #16626

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2020-02-17 10:00:33 -0600

Seen: 4,409 times

Last updated: Feb 28 '20