Что вы лично используете для захвата отдельных изображений (не видео) с USB-камер (веб-камер) в Python и каковы его оговорки/подводные камни? Учитывая количество неожиданных предостережений, с которыми я столкнулся при этом, будущим поколениям было бы полезно составить список вариантов и предостережений. Известные мне варианты и предостережения:
Предостережения OpenCV (т. е. cv2):
для подключения к камере может потребоваться 30 секунд или более, в качестве альтернативы cv2.VideoCapture(0,cv2.CAP_DSHOW) подключается почти мгновенно, но имеет свой собственный набор предостережений.
может собирать изображения, даже если вы их не читаете. Если у вас есть несколько USB-камер на одном USB-разветвителе, это может привести к перегрузке USB-порта, даже если вы не собираете изображения (непроверено).
может создать буфер изображений, из которого извлекается метод capture.read(). Чтобы получить «текущее» изображение, вызовите capture.grab() несколько раз, чтобы удалить, затем буфер, а затем capture.read().
Вызовите capture.read() сразу после cv2.VideoCapture, чтобы камера начала выполнять автоэкспозицию.
Камера может не подключиться с самым высоким разрешением, поэтому установите разрешение явно.
Что вы лично используете для захвата отдельных изображений (не видео) с USB-камер (веб-камер) в Python и каковы его оговорки/подводные камни? Учитывая количество неожиданных предостережений, с которыми я столкнулся при этом, будущим поколениям было бы полезно составить список вариантов и предостережений. Известные мне варианты и предостережения: Предостережения OpenCV (т. е. cv2): [list] [*][code]cv2.VideoCapture(0)[/code] для подключения к камере может потребоваться 30 секунд или более, в качестве альтернативы cv2.VideoCapture(0,cv2.CAP_DSHOW) подключается почти мгновенно, но имеет свой собственный набор предостережений. [*][code]cv2[/code] может собирать изображения, даже если вы их не читаете. Если у вас есть несколько USB-камер на одном USB-разветвителе, это может привести к перегрузке USB-порта, даже если вы не собираете изображения (непроверено). [*][code]cv2[/code] может создать буфер изображений, из которого извлекается метод capture.read(). Чтобы получить «текущее» изображение, вызовите capture.grab() несколько раз, чтобы удалить, затем буфер, а затем capture.read(). [*]Вызовите capture.read() сразу после cv2.VideoCapture, чтобы камера начала выполнять автоэкспозицию. [*]Камера может не подключиться с самым высоким разрешением, поэтому установите разрешение явно. [/list] PyGame (непроверено) ecapture (т.е. ec) (непроверено)