Чтение кадров с камеры с помощью pyusb - PullRequest
0 голосов
/ 13 марта 2020

Мне нужен доступ к USB-камере через интерфейс низкого уровня. Требования включают в себя идентификацию устройства и то, что код может работать на linux, windows и android.

. Ниже приведен пример начала программы с использованием pyusb. Вызов set_configuration () завершается с ошибкой «ресурс занят», и для его запуска требуется root.

Как читать кадры с камеры? И есть ли более подходящий API для вышеуказанных требований?

#!/usr/bin/python3
import sys
import usb.core
import usb.util

dev = usb.core.find(idVendor=0x0c45, idProduct=0x6366)

if dev is None:
    raise ValueError('Device not found')

cfg = dev[0]
print( cfg[(0,0)] )

# Fails here:
dev.set_configuration()

data = dev.read(0x83,3*640*480,100)

Ошибка трассировки:

Traceback (most recent call last):
  File "./V4L2Test.py", line 15, in <module>
    dev.set_configuration()
  File "/usr/lib/python3.7/site-packages/usb/core.py", line 869, in set_configuration
    self._ctx.managed_set_configuration(self, configuration)
  File "/usr/lib/python3.7/site-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/lib/python3.7/site-packages/usb/core.py", line 148, in managed_set_configuration
    self.backend.set_configuration(self.handle, cfg.bConfigurationValue)
  File "/usr/lib/python3.7/site-packages/usb/backend/libusb1.py", line 794, in set_configuration
    _check(self.lib.libusb_set_configuration(dev_handle.handle, config_value))
  File "/usr/lib/python3.7/site-packages/usb/backend/libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 16] Resource busy
...