裁剪具有已定义宽度,长度和像素位置的视频文件

Sta*_*hil 6 c++ video video-capture video-processing video-streaming

我试图创建一个程序来检测视频中的脸部.在接受"面子"之前,必须通过一些要求.毕竟的要求都满足我,然后要采取认为"面子"的框架和裁剪他们,使脸部对焦的区域.程序将遍历每一帧并执行此操作,然后拍摄新视频并将其制作成视频文件.

我从未使用过视频文件或图像文件,所以这对我来说都是新手.我目前正在编写用于确定面部是否被接受的所有算法,以及面部的定位.我还为该项目提供了一个视频处理器.视频处理器用于检测面部.如果检测到面部,视频会将面部标记为红色矩形,并给出面部的x和y坐标,以及面部的长度和宽度.

我完全不知道怎么做的程序的唯一区域是面部的实际裁剪,以及新框架(聚焦在面部上)在原始框架上的放置.

我也不确定如何制作视频文件.我假设它与创建文本文件的行相同,只是使用了不同的方法和类.它是否正确?如果不是我应该怎么做?

我仍然处于设计阶段(我有视频处理器和其他程序的设计,但我想确保在我告诉那个人我可以做之前我能够裁剪和放置面部).我有视频处理器的代码(它很长但我可以发布一些方法,如果需要).

我可以看一下什么好的资源或建议?

(我不知道最好的标签.随意添加/删除任何)

Euq*_*qil 1

您有几个选择。如果您想在运行应用程序之前对视频进行预处理(以防它采用某种不寻常的格式),我建议使用VirtualDub。据我所知,您可以使用控制台运行它。如果您的视频采用某种标准格式,您可以忽略此段落。

对于应用程序本身,我建议使用 OpenCV(因为它是执行此类操作时常用的工具)。我建议阅读这个很棒的教程。然后,OpenCV 允许您“逐帧”浏览视频。

然后通过所谓的 ROI 完成裁剪本身。如果我理解正确的话,那么您想要制作一个由图片组合而成的新视频。稍后,当您尝试 OpenCV 时,您可能不再需要此提示,但请查看函数 cvCreateVideoWriter 和 cvWriteFrame