Как получить воспроизведение видео в качестве входа камеры?

Я хочу обнаружить конкретный объект из текущего видео. Поэтому я реализую часть извлечения кадра (opencv, c ++) как одну часть и другую функцию обнаружения (emgucv, c #) для другой части. для интеграции этих частей я добавил exe-файл проекта c ++ в проект c #, и это работает хорошо. но теперь я хочу проверить этот проект в автономном режиме. Это означает, что я хочу протестировать этот проект с использованием видео, сохраненного на жестком диске. до интеграции проект c ++ мог выполнять как в онлайн, так и в автономном режиме. но после интеграции это может быть выполнено только в режиме онлайн. пожалуйста, помогите мне решить это.

0

Решение

Вы всегда можете попробовать эмуляторы веб-камеры, такие как Magic Camera, Fake Webcam или что-то еще (просто Google, есть куча программного обеспечения по всему Интернету) — они будут воспроизводить видеофайл, как будто он исходит от вашей веб-камеры.

Тем не менее, вы также можете подумать о реорганизации дизайна вашего программного обеспечения, чтобы он мог принимать как потоки, так и файловые входы — это должно быть очень просто, когда вы отделите логику обработки от логики захвата.

3

Другие решения

Живая видеокамера является в основном асинхронным источником кадров изображения. Предположительно, вы передаете функцию обратного вызова в API камеры, и этот обратный вызов срабатывает при доступности нового кадра? Вы можете подражать этой функциональности довольно простым способом.

Напишите функцию, которая открывает ваш видеофайл, а затем запускается в цикле … на каждой итерации цикла он извлекает кадр из файла, упаковывает его соответствующим образом и затем вызывает вашу функцию обратного вызова. Затем он может спать в течение нескольких миллисекунд, а затем повторить цикл. Запустите эту функцию в своем собственном потоке. С точки зрения обратного вызова он ничем не отличается от живой камеры.

0

По вопросам рекламы [email protected]