Я пытался использовать библиотеку 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 и двоичных файлах.
Спасибо.