Мне нужен доступ к 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