Обрезка видеофайла с определенной шириной, длиной и расположением в пикселях - PullRequest
6 голосов
/ 28 апреля 2011

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

Я никогда не работал с видеофайлами или файлами изображений, так что это все для меня в новинку.В настоящее время я пишу все алгоритмы, используемые для определения того, принято ли лицо, и определения местоположения лица.У меня также есть видеопроцессор, который мне дали для проекта.Видеопроцессор используется для обнаружения лиц.Если обнаружено лицо, видео отметит лицо красным прямоугольником и даст мне координаты x и y лица, а также длину и ширину лица.

Единственная область программы, которую я абсолютно не знаю, как это сделать, - это фактическое кадрирование лица и размещение нового кадра (сфокусированного на лице) поверх исходного кадра.

Я также не уверен, как сделать видео файл.Я предполагаю, что это происходит по тому же принципу, что и при создании текстового файла, только с использованием различных методов и классов.Это правильно?Если нет, то как мне подойти к этому?

Я все еще на стадии проектирования (у меня есть видеопроцессор и дизайн для остальной части программы, но я хотел убедиться, что смог обрезать и разместитьлицо, прежде чем я сказал парню, что могу это сделать).У меня есть код для видеопроцессора (он длинный, но я могу опубликовать некоторые методы, если это необходимо).

Любые полезные ресурсы, на которые я мог бы взглянуть или предложить?

(Я не знаю лучших тегов для этого. Не стесняйтесь добавлять / удалять любые)

1 Ответ

1 голос
/ 06 мая 2011

У вас есть несколько вариантов. Если вы хотите предварительно обработать видео перед запуском вашего приложения (если оно в каком-то необычном формате), я бы предложил использовать для этого VirtualDub . Вы можете запустить его с консоли, насколько я помню. Если ваше видео в каком-то стандартном формате, вы можете просто проигнорировать этот параграф.

Для самого приложения я бы предложил OpenCV (так как это обычный инструмент, когда вы делаете такие вещи). Я бы предложил прочитать этот замечательный учебник . Затем OpenCV позволяет просматривать видео «кадр за кадром».

Сама обрезка выполняется через так называемый ROI. Если я правильно понял, вы хотите собрать новое видео, только что собранное из картинок. Позже, когда вы попробуете OpenCV, вам, вероятно, больше не понадобится эта подсказка, но посмотрите на функции cvCreateVideoWriter и cvWriteFrame

...