Какое правильное имя устройства / камеры / формат следует передать в библиотеку ZBar / ZBarSharp, [неверный запрос: видеоустройство не найдено]

Я пытался использовать библиотеку ZBarSharp для обнаружения QR-кода с камеры, но когда я передаю имя камеры, я получить сообщение об ошибке

invalid request: video device not found

Это код


public void Load(){
            // https://stackoverflow.com/a/26159982/12920956
            var devices = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice);    
            
            var video = new Video();

            // the problem here, what is the device name ?!
            video.Open(devices[1].Name.ToString());
            // Or video.Open(devices[1].ClassID.ToString());
}

Я думал, что проблема в C # Wrapper, но я загрузил двоичные файлы с здесь

и выполнить

zbarcam.exe "USB2.0_Camera"

и я получил

ERROR: zbar processor in _zbar_video_open():
    invalid request: video device not found 'USB2.0_Camera'

Я попытался передать имя устройства, как показано в справке

λ zbarcam --help
usage: zbarcam [options] [/dev/video?]

scan and decode bar codes from a video stream

options:
    -h, --help      display this help text
    --version       display version information and exit
    -q, --quiet     disable beep when symbol is decoded
    -v, --verbose   increase debug output level
    --verbose=N     set specific debug output level
    --xml           use XML output format
    --raw           output decoded symbol data without symbology prefix
    --nodisplay     disable video display window
    --prescale=<W>x<H>
                    request alternate video image size from driver
    -S<CONFIG>[=<VALUE>], --set <CONFIG>[=<VALUE>]
                    set decoder/scanner <CONFIG> to <VALUE> (or 1)

Но когда я выполняю zbarcam --verbose=32

чтобы запустить приложение и получить более подробную информацию, я получил

окно выбора камеры

Итак, заметка USB2.0_Camera в списке? и когда я выбираю его и нажимаю OK, все работает, и я получаю

_zbar_video_open:     [0] Microsoft WDM Image Capture (Win32) - Version:  10.0.19041.1
vfw_capture_thread: spawned vfw capture thread (thr=5630)
_zbar_video_open: opened camera: Microsoft WDM Image Capture (Win32) (0) (thr=5530)
vfw_probe: initial format: 640x480 @16bpp (96000) cmp=YUY2(32595559) res=0x0 clr=0/0 (28) (bisz=28)
vfw_probe: probing supported formats:
vfw_probe_format:     trying I420(30323449)...
vfw_probe_format:       no (set fails)
vfw_probe_format:     trying YV12(32315659)...
vfw_probe_format:       no (set fails)
vfw_probe_format:     trying NV12(3231564e)...
vfw_probe_format:       no (set fails)
vfw_probe_format:     trying UYVY(59565955)...
vfw_probe_format:       no (set fails)
vfw_probe_format:     trying YUY2(32595559)...
vfw_probe_format:       actual: 640x480 @16bpp (96000) cmp=YUY2(32595559) res=0x0 clr=0/0 (28)
vfw_probe_format:       yes
vfw_probe_format:     trying BGR3(33524742)...
vfw_probe_format:       no (set fails)
vfw_probe_format:     trying BGR4(34524742)...
vfw_probe_format:       no (set fails)
vfw_probe_format:     trying YVU9(39555659)...
vfw_probe_format:       no (set fails)
vfw_probe_format:     trying GREY(59455247)...
vfw_probe_format:       no (set fails)
vfw_probe_format:     trying Y800(30303859)...
vfw_probe_format:       no (set fails)
vfw_probe_format:     trying JPEG(4745504a)...
vfw_probe_format:       no (set fails)
WARNING: zbar video in zbar_video_get_fd():
    unsupported request: video driver does not support polling
proc_video_thread: spawned video thread
proc_input_thread: spawned input thread
_zbar_best_format: from YUY2(32595559) to BGR3(33524742)=144 BGR4(34524742)=144 JPEG(4745504a)=-1
zbar_negotiate_format: YUY2(32595559) -> BGR3(33524742) (144)
zbar_negotiate_format: setting best format YUY2(32595559) (144)
vfw_set_format: seting format: YUY2(32595559) 640x480 @16bpp (96000) cmp=YUY2(32595559) res=0x0 clr=0/0 (28)
vfw_set_format: set new format: YUY2(32595559) 640x480 @16bpp (96000) cmp=YUY2(32595559) res=0x0 clr=0/0 (28)
vfw_init: initialized video capture: 4 buffers 33333ms/frame
win_handle_event: WM_SIZE 640x480
_zbar_window_resize: 640x480 scale=13
_zbar_process_image: processing: YUY2(32595559) 640x480 @06860008
_zbar_best_format: from YUY2(32595559) to BGR3(33524742)=144 BGR4(34524742)=144 JPEG(4745504a)=-1
zbar_window_redraw: init: src=YUY2(32595559) 0x0 dst=BGR3(33524742) 0x0
_zbar_window_bih_init: biCompression=0 biBitCount=24
zbar_window_redraw: scale: src=640x480 win=640x480 by 480/480 => 640x480 @0,0
_zbar_process_image: processing: YUY2(32595559) 640x480 @06900008

и обнаружение QRCode работает.

Но как называется устройство,

Я попытался изучить код гораздо подробнее Здесь, но у меня проблема со сборкой этого кода в Windows. Поэтому очень сложно отладить его, чтобы выяснить, откуда взялось имя устройства.

Итак, вкратце, я просто хочу знать правильный формат имени камеры, который я должен передать, чтобы он работал в CSharp и двоичных файлах.

Спасибо.


person Al Banna Techno logy    schedule 06.03.2021    source источник