我正在尝试创建一个程序来检测视频中的人脸。在我接受“面子”之前,必须满足一些要求。在满足所有要求后,我想要拍摄包含该“脸”的帧并裁剪它们以使脸部成为焦点区域。该程序将遍历每一帧并执行此操作,然后拍摄新视频并将其制作成视频文件。
我从未使用过视频文件或图像文件,所以这对我来说是全新的。我目前正在编写用于确定是否接受面部以及面部定位的所有算法。 我还有一个为该项目提供的视频处理器。视频处理器用于检测人脸。如果检测到面部,视频将在红色矩形中标记面部,并提供面部的 x 和 y 坐标以及面部的长度和宽度。
我完全不知道该怎么做的程序的唯一区域是面部的实际裁剪,以及新框架(聚焦在面部)在原始框架上的放置。
我也不知道如何制作视频文件。我假设它与创建文本文件的思路相同,只是使用了不同的方法和类。这个对吗?如果不是,我应该如何处理?
我仍处于设计阶段(我有视频处理器和程序其余部分的设计,但我想在告诉他我可以做之前确保我能够裁剪和放置脸部).我有视频处理器的代码(它很长,但如果需要我可以发布一些方法)。
我可以看看有什么好的资源或建议吗?
(我不知道最好的标签。请随意添加/删除任何标签)
最佳答案
您有几个选择。如果你想在运行你的应用程序之前预处理视频(如果它是一些不寻常的格式)我建议使用 VirtualDub为了那个原因。据我所知,您可以使用控制台运行它。如果您的视频是某种标准格式,您可以忽略这一段。
对于应用程序本身,我建议使用 OpenCV(因为它是您执行此类操作时常用的工具)。我建议阅读 this great tutorial .然后,OpenCV 允许您“逐帧”浏览视频。
然后通过所谓的 ROI 完成裁剪本身。如果我理解正确,那么您想要将刚刚从图片中拼凑而成的新视频放在一起。稍后当您尝试使用 OpenCV 时,您可能不再需要此提示,而是查看函数 cvCreateVideoWriter 和 cvWriteFrame
关于c++ - 裁剪具有定义的宽度、长度和像素位置的视频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5821707/