Во-первых, поставьте процедуру загрузки USB-камеры непосредственно для справки.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2023/5/16 10:22
# @Author : Chenan_Wang
# @File : cv_test.py
# @Project : pad_det
# @Software : PyCharm
import cv2 as cv
if __name__ == "__main__":
cap = cv.VideoCapture()
cap.open(1, cv.CAP_DSHOW) # Здесь 0 означает, что камера поставляется вместе с компьютером, а 1 означает внешнюю камеру.
while True:
if not cap.isOpened():
print('can not open camera')
break
ret, frame = cap.read() # прочитать изображение
if not ret: # Если чтение изображения не удалось, оно сразу перейдет в следующий цикл.
continue
cv.namedWindow("cv_test")
cv.imshow('cv_test', frame)
my_key = cv.waitKey(1)
# Нажмите q, чтобы выйти из цикла, 0xFF — чтобы исключить влияние некоторых функциональных клавиш на ASCII-код q.
if my_key & 0xFF == ord('q'):
break
#Выпуск ресурсов
cap.release()
cv.destroyAllWindows()
Камера успешно загружена, но разрешение по умолчанию слишком низкое (моя камера поддерживает 1080p). Установите разрешение и частоту кадров с помощью следующего кода:
cap.set(cv.CAP_PROP_FRAME_WIDTH, 1920)
cap.set(cv.CAP_PROP_FRAME_HEIGHT, 1080)
cap.set(cv.CAP_PROP_FPS, 30)
Разрешение теперь 1080p.,Но задержка серьезная,Я нашел много методов в Интернете.,В наличии почти нет! ! !:
cap.set(cv.CAP_PROP_FOURCC, cv.VideoWriter_fourcc('M', 'J', 'P', 'G'))
==> Невозможно решить проблему, все еще есть задержка
При настройке разрешения не устанавливайте его 1920х1080.,Измените разрешение на 1900x1080!,Фактическое изображение по-прежнему будет соответствовать разрешению камеры 1920x1080.,При сохранении тоже 1920х1080.
И изображение будет с той же частотой кадров, что и предыдущее разрешение cv по умолчанию, чрезвычайно плавное, практически без задержек.
Я не знаю, что именно я хочу сделать, надеюсь, кто-нибудь даст мне ответы~
Полный код приведен ниже для справки:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2023/5/16 10:22
# @Author : Chenan_Wang
# @File : cv_test.py
# @Project : pad_det
# @Software : PyCharm
import cv2 as cv
if __name__ == "__main__":
cap = cv.VideoCapture()
cap.open(1, cv.CAP_DSHOW) # Здесь 0 означает, что камера поставляется вместе с компьютером, а 1 означает внешнюю камеру.
cap.set(cv.CAP_PROP_FOURCC, cv.VideoWriter_fourcc('M', 'J', 'P', 'G'))
cap.set(cv.CAP_PROP_FRAME_WIDTH, 1900) # Ключ к решению проблемы! ! !
cap.set(cv.CAP_PROP_FRAME_HEIGHT, 1080)
cap.set(cv.CAP_PROP_FPS, 30)
while True:
if not cap.isOpened():
print('can not open camera')
break
ret, frame = cap.read() # прочитать изображение
if not ret: # Если чтение изображения не удалось, оно сразу перейдет в следующий цикл.
continue
cv.namedWindow("cv_test")
cv.imshow('cv_test', frame)
my_key = cv.waitKey(1)
# Нажмите q, чтобы выйти из цикла, 0xFF — чтобы исключить влияние некоторых функциональных клавиш на ASCII-код q.
if my_key & 0xFF == ord('q'):
break
#Выпуск ресурсов
cap.release()
cv.destroyAllWindows()