LINUX.ORG.RU

MATLAB не хочет работать с вебкамерой

 , ,


0

1

Webcamlist не видит ни одной камеры, которых у меня 3 штуки:

>> webcamlist
    
ans = 
    
{}

Логи:

>> imaqhwinfo('linuxvideo')

ans = 

       AdaptorDllName: '/home/voland/Documents/MATLAB/SupportPackages/R2014b/osgenericvideointerfac...'
    AdaptorDllVersion: '4.8 (R2014b)'
          AdaptorName: 'linuxvideo'
            DeviceIDs: {[1]  [2]}
           DeviceInfo: [1x2 struct]

>> info = imaqhwinfo('linuxvideo', 1);
>> info.SupportedFormats'

ans = 

    'YUYV_1024x576'
    'YUYV_1184x656'
    'YUYV_1280x720'
    'YUYV_1280x960'
    'YUYV_160x120'
    'YUYV_176x144'
    'YUYV_320x176'
    'YUYV_320x240'
    'YUYV_352x288'
    'YUYV_432x240'
    'YUYV_544x288'
    'YUYV_640x360'
    'YUYV_640x480'
    'YUYV_752x416'
    'YUYV_800x448'
    'YUYV_800x600'
    'YUYV_864x480'
    'YUYV_960x544'
    'YUYV_960x720'

>> vid = videoinput('linuxvideo',1,'YUYV_640x480')

Summary of Video Input Object Using 'UVC Camera (046d:0825)'.

   Acquisition Source(s):  Camera 1 is available.

  Acquisition Parameters:  'Camera 1' is the current selected source.
                           10 frames per trigger using the selected source.
                           'YUYV_640x480' video data to be logged upon START.
                           Grabbing first of every 1 frame(s).
                           Log data to 'memory' on trigger.

      Trigger Parameters:  1 'immediate' trigger(s) on START.

                  Status:  Waiting for START.
                           0 frames acquired since starting.
                           0 frames available for GETDATA.

>> preview(vid)
Warning: Unable to reset the crop area.  Perhaps the device is in use. 
Error using imaqdevice/preview (line 176)
Could not connect to the image acquisition device.  Device may be in use. 

dmesg:

    [11484.585199] usb 4-1.1: new high-speed USB device number 7 using ehci-pci
    [11484.888728] uvcvideo: Found UVC 1.00 device <unnamed> (046d:0825)
    [11484.979398] input: UVC Camera (046d:0825) as /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.1/4-1.1:1.0/input/input23 

Перерыл многочисленные интернеты, но решения так и не нашел. Все 3 камеры прекрасно работают на Windows x64 с MATLAB 2015b. Также работают на линуксе (Arch x64) в различном софте, типа Cheese. Может нужно добавить пользователя в какую-то группу, кроме video или еще что-то? Очень надеюсь на вашу помощь. Заранее спасибо!

Ответ на: комментарий от steemandlinux

Спасибо за ссылку, но я же писал, что уже не один час гуглил эту проблему, в т.ч. видел этот топик. В качестве решения проблемы ТС там написал, что заменил камеру на UVC, а я приложил dmesg, в котором видно, что камера как раз UVC. К тому же на виндовом матлабе все нормально работает

Maratk1n
() автор топика
Ответ на: комментарий от eagleivg

Как узнать наличие прав на устройство /dev/videoN? Пользователь в группе video состоит:

➜  ~ groups
wheel uucp bumblebee video voland cups
Матлаб в основном запускаю под рутом, потому что были проблемы с установкой тулбоксов из под юзера

Maratk1n
() автор топика
Ответ на: комментарий от Maratk1n

Как узнать наличие прав на устройство /dev/videoN?


Покажи вывод

ls -l /dev/video{0,1,2}

Пользователь в группе video состоит: groups


Это только значит, что группа video есть в системе.
Посмотреть, в каких группах пользователь можно так:

id $USER

Если выведет (video), значит в группе.

eagleivg ★★★★★
()
Ответ на: комментарий от eagleivg
➜  ~ ls -l /dev/video{0,1,2} 
ls: невозможно получить доступ к '/dev/video1': Нет такого файла или каталога
ls: невозможно получить доступ к '/dev/video2': Нет такого файла или каталога
crw-rw----+ 1 root video 81, 0 апр  4 04:02 /dev/video0
➜  ~ id voland
uid=1000(voland) gid=1000(voland) группы=1000(voland),10(wheel),14(uucp),91(video),56(bumblebee),1001(cups)
Maratk1n
() автор топика
Ответ на: комментарий от Maratk1n

С правами всё нормально, выходит дело не в них.

Перечитал исходное сообщение, заметил это:

Warning: Unable to reset the crop area. Perhaps the device is in use.
Error using imaqdevice/preview (line 176)
Could not connect to the image acquisition device. Device may be in use.


Проверь, не схватил ли кто камеру ещё:

fuser /dev/video0
lsof /dev/video0

eagleivg ★★★★★
()
Ответ на: комментарий от eagleivg
➜  ~ fuser /dev/video0
➜  ~ sudo !!
➜  ~ sudo fuser /dev/video0
/dev/video0:          9313
➜  ~ lsof /dev/video0
➜  ~ sudo !!
➜  ~ sudo lsof /dev/video0
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF  NODE NAME
MATLAB  9313 root  490u   CHR   81,0      0t0 14194 /dev/video0
MATLAB  9313 root  517u   CHR   81,0      0t0 14194 /dev/video0

Я в матлабе выполняю две команды:

>> vid = videoinput('linuxvideo',1,'YUYV_640x480')
>> preview(vid)
после выполнения первой девайс /dev/video0 используется матлабом (до этого свободен). т.е. получается, что когда пытаюсь захватить превью камеры, девайс уже занят предыдущей командой. Может поэтому ошибка вылетает, хоть это и странно очень. На винде делаю то же самое, там все нормально

Maratk1n
() автор топика
Ответ на: комментарий от Maratk1n

после выполнения первой девайс /dev/video0 используется матлабом (до этого свободен). т.е. получается, что когда пытаюсь захватить превью камеры, девайс уже занят предыдущей командой.


Вот это вот странно, по идее он должен использовать уже открытое устройство. Похоже на багу в матлабе, либо ты что-то не так делаешь.
В первом случае тебе в техпод матлаба, во втором - в документацию.

eagleivg ★★★★★
()
Ответ на: комментарий от eagleivg

Делал по мануалам и примерам, в принципе это самый простой способ захватить камеру. Из безысходности установил три версии матлаба (R2013a, R2014b, R2015b), ни в одной не работает, а в 15й вообще камеру не видит, хоть убей. Чуть позже попробую на другом ноуте под убунту, все же интересно у меня ли лыжи не едут.

А вообще проблема не такая популярная: дальше первой страницы гугла ничего нет по этому поводу. В основном проблемы остались нерешенными, было всего 2 решения: кто-то заменил камеру (я пробовал с тремя разными), кто-то убил процесс, использующий камеру (у меня ничто кроме матлаба ее не использует).

Писал, кстати, в поддержку матлаба, попросили номер лицензии, скинул им (у меня кряк), посмотрим что дальше скажут.

Maratk1n
() автор топика

Может Wine собран без поддержки libv4l2? Перепробуй с Crossover (триал 15 дней). Если подтвердится - пересобери Wine с помощью sudo apt-get build-dep wine, sudo apt-get install libv4l2-dev, apt-get -b source wine

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 2)
Ответ на: комментарий от ZenitharChampion

Я устанавливал версию для линукса, скачанную отсюда:
рутрекер.орг/forum/viewtopic.php?t=4917946
С вайном не особо дружу, если честно. Да и не уверен, что матлаб под вайном можно запустить

Maratk1n
() автор топика
Ответ на: комментарий от Maratk1n

Не очень понимаю прикола запускать левый софт с правами рута. Всегда есть вариант попросить пробную версию от имени своей организации.

eagleivg ★★★★★
()
Последнее исправление: eagleivg (всего исправлений: 1)
Ответ на: комментарий от Maratk1n

А, ну раз нативная линукс-версия, то пиши в техподдержку. Они обязаны тебе помочь, если ты покупал программу за деньги.

ZenitharChampion ★★★★★
()
Ответ на: комментарий от Maratk1n

Ну не знаю :-(

Мне понадобилось указать маленькую буферизацию в VLC, когда я смотрел веб-камеру. Оказалось что это можно сделать только в консоли. cvlc --network-caching 250 /dev/video0 не работает. Поменял на «v4l2:///dev/video0» - заработало

ZenitharChampion ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.