项目:在视频的每一帧上添加运行日期/时间戳。(这是数码摄像机的结果,我父亲问我,他怎么能将时间戳(毫秒分辨率)永久地添加到视频中。
一个朋友给我指了指opencv(实际上是emgucv),由于我的偏好,我在python中尝试了opencv的运气。
文档很糟糕,我甚至很难(花了5个小时左右)安装这个包。 资料来源:
我在Windows 7 x64上工作,所以我不得不降级python以使用numpy(win64没有numpy版本)
与PyCharm IDE一起工作。
结果安装使我获得了文件C:\ Python27\Lib\site packages\cv2.pyd
我试图找到开始使用的文档,但我非常困惑,不知道从何开始,所有的例子都令人困惑-即:
我的问题:
谢谢
使用hachoir-metadata读取视频文件的元数据(包括帧速率、高度和宽度)。
导入:
功能:
用法:
查看相关属性:
使用OpenCV和Python,您的任务应该相对容易完成。看来你对OpenCV还不熟悉,所以我会尽量把我的解释保持透彻,但如果你需要澄清的话,请尽管问。
我不确定你是从现场摄像机视频源获取数据,还是正在对录制的视频进行后期处理。不管怎样。。。
获取数据。 如果使用实时源:
如果使用录制的录像:
初始化视频编写器。查找at this question以获取有关编解码器的帮助-查找工作的编解码器并非易事。我也在使用Windows7x64,下面提到的编解码器是唯一一个对我有效的。另外,将变量
fps
设置为尽可能接近实际输入的视频帧速率-一旦开始写入帧,就不能更改它。处理此数据并添加文本。最后,将编辑后的帧写入视频文件。
就这么简单!我几乎每天都用上面的代码向视频文件中写入文本,所以它肯定能工作。我能预见的唯一潜在问题是编解码器,不幸的是,我不太了解。我希望这可以解决你的问题,请随时提出更多的问题。
编辑:对评论问题的回答。
1.)据我所知,你只能使用.avi,因为你必须在OpenCV中使用未压缩格式。恐怕我不知道如何使用其他(压缩)格式。也许你可以使用第三方程序来进行转换前/转换后的工作?出现
frame
异常的原因是我的错误,我已编辑了答案以包含缺少的行。2)恐怕我不知道如何阅读元数据。如果我知道我会让你知道的。我自己寻找视频帧速率的方法是让OpenCV在视频中运行一次,使用
Time
模块计算平均帧速率。然后,可以在写入视频文件时使用此估计值。3.)我发现,根据几个因素,结果视频的大小可能与原始视频有很大的不同,最重要的是所选的
fps
与实际原始帧率的接近程度。4)至于其他字体,有几种可用。我可以让你参考this question来快速了解一下。以下是相关文件:
相关问题 更多 >
编程相关推荐