如何使用OpenCV的cv :: Mat&获得H.264的“运动矢量”?

时间:2015-10-20 20:45:14

标签: ios opencv h.264 avcapturesession

我正在使用OpenCV iOS SDK。

使用设备预设AVCaptureSessionPresetiFrame1280x720进行捕捉时,我希望从h.264帧以30 fps的速度获得运动矢量

我想获得数值向量,我相信OpenCV可能会有所帮助。但是我很难快速研究它。

我应该使用哪些OpenCV cv::Mat 方法

更像是找到正确的迭代器来提取运动矢量吗?

在做任何事情之前,是否涉及将捕获的视频数据编码到h.264帧中?

2 个答案:

答案 0 :(得分:3)

OpenCV没有实现h.264编码器,但使用外部库来压缩视频,你可以在ios here上看到它是如何完成的。如果要提取运动矢量,则需要找到一个返回它们的h.264解码器,或修改一个开源的解码器。

This project可能会帮助你。

答案 1 :(得分:1)

OpenCV可以直接计算运动矢量:你应该看一下Optical FLow algorithms

要开始使用iOS和openCV,您可能需要查看我的初始项目(SwiftObjective-C)。由于C ++ openCV代码与Swift和Objective-C完全分离,您可以非常轻松地转储示例中的照片拼接部分并将其替换为一些光流处理 - 来自openCV发行版的这个sample code可能会有所帮助

我不知道你是否会以这种方式实现你所需的帧速率,它肯定不会给你与H.264编码的运动矢量相同的结果。直接从H.264编码的文件中提取它们是一种非常诱人的方式(我认为你正在尝试)。和你一样,我试图用AVFoundation解决这个问题。如果我到达那里,我会回复your other question