c++ - 裁剪具有定义的宽度、长度和像素位置的视频文件

标签 c++ video video-streaming video-capture video-processing

我正在尝试创建一个程序来检测视频中的人脸。在我接受“面子”之前,必须满足一些要求。在满足所有要求后,我想要拍摄包含该“脸”的帧并裁剪它们以使脸部成为焦点区域。该程序将遍历每一帧并执行此操作,然后拍摄新视频并将其制作成视频文件。

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

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

我也不知道如何制作视频文件。我假设它与创建文本文件的思路相同,只是使用了不同的方法和类。这个对吗?如果不是,我应该如何处理?

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

我可以看看有什么好的资源或建议吗?

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

最佳答案

您有几个选择。如果你想在运行你的应用程序之前预处理视频(如果它是一些不寻常的格式)我建议使用 VirtualDub为了那个原因。据我所知,您可以使用控制台运行它。如果您的视频是某种标准格式,您可以忽略这一段。

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

然后通过所谓的 ROI 完成裁剪本身。如果我理解正确,那么您想要将刚刚从图片中拼凑而成的新视频放在一起。稍后当您尝试使用 OpenCV 时,您可能不再需要此提示,而是查看函数 cvCreateVideoWriter 和 cvWriteFrame

关于c++ - 裁剪具有定义的宽度、长度和像素位置的视频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5821707/

相关文章:

c++ - 我可以根据 C++ 中的输入通过相同的方法返回不同的对象吗?

c++ - 如何直接使用ffmpeg将H264原始流写入mp4

ruby-on-rails - 将视频转换为 flash 和 mp4 ruby​​ on rails?

web-applications - 最好的基于网络的视频播放器 HD - h264?

IOS 网页 View 和视频

windows - 如何在 tcl 8.0 版和 windows 7 上使用 FFMPEG 命令从网络摄像头流式传输实时视频显示?

c++ - 使用默认值输入模拟参数

c++ 通过 GDB 而不是 xCode 接收段错误——需要帮助调试

c++ - 如何强制调用 move 构造函数,我为什么要这样做?

android - 打开 Android 默认图库中特定文件夹中的所有图像