我有一个用python、opencv和ffmpeg构建的网络摄像机视频录制程序
它工作正常,只是视频的颜色比现实更蓝。问题似乎来自图像的颜色格式。
似乎OpenCv正在提供BGR图像,ffmpeg+libx264期待YUV420p,我读到YUV420p对应于YCbCr。
opencv没有从BGR到YCbCr的转换。它只有一个到YCrCb的转换。
我已经做了一些搜索,并尝试了不同的方法来尝试将opencv图像转换为ffmpeg+libx264可以接受的图像。没有人在工作。在这一点上,我有点迷茫,我希望任何指针可以帮助我解决这个颜色问题。
Tags:
你试过用split和merge切换OpenCV中的Cb/Cr通道吗?
检查了:http://en.wikipedia.org/wiki/YCbCr中的转换公式?
没错,OpenCV的默认像素格式是BGR。
ffmpeg端的等效格式将是BGR24,因此如果您不想将其转换为YUV420p,则不需要将其转换为YUV420p。
This post演示如何使用python应用程序从网络摄像头捕获帧并将帧写入stdout。其目的是在命令行上调用这个应用程序,并将结果直接传递到ffmpeg应用程序,该应用程序将帧存储在磁盘上。真聪明!
捕获.py:
在shell上执行的命令是:
我用OpenCV 2.4.2在Mac OS X上测试了这个解决方案。
编辑:
如果您没有尝试从相机录制视频并使用OpenCV将视频写入磁盘上的mp4文件,请执行以下操作:
我已经在MacOSX和OpenCV2.4.2上用Python2.7测试过了。
相关问题 更多 >
编程相关推荐