Захват кадров с веб-камеры, изображение обрезано ⇐ Python
Захват кадров с веб-камеры, изображение обрезано
К сожалению, все, что я использую, работает на Windows 10 Enterprise.
Я подключаю удаленный рабочий стол к этому компьютеру с Windows, у него есть Flask API, у которого есть маршрут, который захватывает последний кадр с веб-камеры с помощью Open CV и записывает изображения в папку.
Если я отключусь от компьютера (без выхода из системы), примерно через 2 часа снятые и записанные изображения будут обрезаны в левом верхнем углу экрана. Я не могу повторить это, когда подключаюсь удаленно. Что странно, обрезанное изображение имеет то же разрешение, что и необрезанное полное изображение.
Они выглядят так:
Обрезанное изображение
Все изображения, обрезанные или нет, имеют размер 640 x 480.
Вот маршрут, который записывает текущее изображение с веб-камеры в папку.
app = Flask(__name__) крышка = cv2.VideoCapture(0) cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) # Используйте функцию кэширования Flask для кэширования CAP (поэтому он не устанавливает его каждый раз, когда мы вызываем маршрут) app.cache = крышка @app.route('/следующий') защита следующего(): cv_cap = app.cache имя_файла = urllib.parse.unquote(request.args.get('fileName')).replace("{{}}", "{}") если нет os.path.exists('C:/Users/Public/photos'): os.madeirs('C:/Users/Public/photos') если cv_cap.isOpened(): ret, кадр = cv_cap.read() если возврат: # Вставляем кадры в общую папку out_path = "C:/Users/Public/photos" кадр = Frame.reshape((480, 640, 3)) cv2.imwrite(os.path.join(out_path, file_name), фрейм) # Проверяем, нужно ли нам освободить место photo_files = glob(os.path.join(out_path, f'*.jpg')) если len(photo_files) > 5000: delete_old_photos(photo_files) ответ = { 'имя_изображения': имя_файла } вернуть jsonify(ответ), 200 еще: print("Изображение не удалось прочитать") вернуть ответ (статус = 500) еще: print("НЕ МОЖЕТ ОТКРЫТЬ КРЫШКУ") вернуть ответ (статус = 500) Мне удалось решить эту проблему, открыв приложение Windows Camera. Для этого необходимо сбросить драйвер или что-то еще, что исправит проблему.
Есть ли в Windows параметр, который мне нужно выбрать? Возможно, драйвер USB перешел в спящий режим или что-то в этом роде.
Я изо всех сил пытаюсь понять, почему это происходит, и сейчас просто отключаю это, поскольку Windows есть Windows.
К сожалению, все, что я использую, работает на Windows 10 Enterprise.
Я подключаю удаленный рабочий стол к этому компьютеру с Windows, у него есть Flask API, у которого есть маршрут, который захватывает последний кадр с веб-камеры с помощью Open CV и записывает изображения в папку.
Если я отключусь от компьютера (без выхода из системы), примерно через 2 часа снятые и записанные изображения будут обрезаны в левом верхнем углу экрана. Я не могу повторить это, когда подключаюсь удаленно. Что странно, обрезанное изображение имеет то же разрешение, что и необрезанное полное изображение.
Они выглядят так:
Обрезанное изображение
Все изображения, обрезанные или нет, имеют размер 640 x 480.
Вот маршрут, который записывает текущее изображение с веб-камеры в папку.
app = Flask(__name__) крышка = cv2.VideoCapture(0) cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) # Используйте функцию кэширования Flask для кэширования CAP (поэтому он не устанавливает его каждый раз, когда мы вызываем маршрут) app.cache = крышка @app.route('/следующий') защита следующего(): cv_cap = app.cache имя_файла = urllib.parse.unquote(request.args.get('fileName')).replace("{{}}", "{}") если нет os.path.exists('C:/Users/Public/photos'): os.madeirs('C:/Users/Public/photos') если cv_cap.isOpened(): ret, кадр = cv_cap.read() если возврат: # Вставляем кадры в общую папку out_path = "C:/Users/Public/photos" кадр = Frame.reshape((480, 640, 3)) cv2.imwrite(os.path.join(out_path, file_name), фрейм) # Проверяем, нужно ли нам освободить место photo_files = glob(os.path.join(out_path, f'*.jpg')) если len(photo_files) > 5000: delete_old_photos(photo_files) ответ = { 'имя_изображения': имя_файла } вернуть jsonify(ответ), 200 еще: print("Изображение не удалось прочитать") вернуть ответ (статус = 500) еще: print("НЕ МОЖЕТ ОТКРЫТЬ КРЫШКУ") вернуть ответ (статус = 500) Мне удалось решить эту проблему, открыв приложение Windows Camera. Для этого необходимо сбросить драйвер или что-то еще, что исправит проблему.
Есть ли в Windows параметр, который мне нужно выбрать? Возможно, драйвер USB перешел в спящий режим или что-то в этом роде.
Я изо всех сил пытаюсь понять, почему это происходит, и сейчас просто отключаю это, поскольку Windows есть Windows.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
TCP-сервер Netty получает от клиента только 536 байт. Остальное обрезано
Anonymous » » в форуме JAVA - 0 Ответы
- 33 Просмотры
-
Последнее сообщение Anonymous
-