我对c ++做的很少,所以对我来说很简单。
我想在.avi视频文件中阅读我正在制作的程序。我将文件位置保存为string
。有没有关于在c ++中使用.avi文件的好教程,还是有人知道读一个人的内容?它和普通文件一样吗?
感谢您的帮助。我在网上看,但我发现的每个帖子都是一个悬而未决的问题。
修改根据要求,这里有一点解释。我有一个更详细的previously asked SO question,但这就是我想要做的事情:
我正在制作一个可以检测面部的程序(虽然是OpenCV)截至目前,我已经获得了一个视频处理器程序,它将检测一个帧上的每个面部,并将该帧作为图像返回CvRec
的面孔。我想拍摄这些面孔并测试它们以验证它们都是真正的面孔。
在我拥有所有面孔(经过测试)后,我想拍摄图片并一起测试。我测试每个帧上的面的大小和距离变化。如果面部以2秒的帧长度传递,那么我想裁剪面部并使其成为每帧的主题。
每裁剪一帧后,我想为用户保存新的视频文件。
希望这会有所帮助。如果有人需要更好的解释,请告诉我。
答案 0 :(得分:5)
首先,一点背景。
什么是AVI?
AVI 代表 音频视频交错 。这是 RIFF(资源交换文件格式) 的特例。 AVI由Microsoft定义,它是音频/视频数据最常用的格式。
我假设您想要读取avi文件并解码压缩视频帧。 AVI文件与任何其他普通文件一样,您可以使用 fread()( 在C 中)或 iostream ( 在C ++中 )打开avi文件并读取其内容。但是avi文件的内容是压缩格式的视频帧。压缩允许更大尺寸的视频内容有效地打包在更少的内存空间中。要理解这些压缩数据,您必须 解码 编码数据格式。您将不得不研究描述如何完成 AVI 编码的标准,然后提取和解码帧。现在,这些原始视频数据在馈送到视频设备时将以视频格式显示。
答案 1 :(得分:4)
看起来你住在OpenCV中,所以事情很简单。如果正确编译OpenCV,它能够将io /编码/解码委托给其他库。例如,Quicktime和其他人,但最好是使用ffmpeg。您可以使用OpenCV API打开,读取和解码所有内容,从而逐帧为您提供视频。
确保使用ffmpeg支持编译OpenCV,然后阅读有关如何读/写AVI文件的OpenCV教程。这真的很容易。
使用ffmpeg支持构建OpenCV可能很难。如果你不能使用当前的版本运行ffmpeg,你可能想要切换到旧版本的OpenCV。
就个人而言,我不会花时间尝试自己阅读视频并将任务委托给OpenCV。这就是应该如何使用。