使用ffmpeg的示例extract_mvs.c,我从彩色rtsp相机获取黑白图像

时间:2017-06-02 01:29:03

标签: libavcodec

我正在使用ffmpeg中的extract_mvs.c:

https://ffmpeg.org/doxygen/2.5/extract__mvs_8c_source.html

我添加了opencv来覆盖图像。

appledeMacBook-Pro:Weibo apple$ pod update
Update all pods
Updating local specs repositories

CocoaPods 1.2.1 is available.
To update use: `sudo gem install cocoapods`

For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.2.1

Analyzing dependencies
Downloading dependencies
Using AFNetworking (3.1.0)
Using Alamofire (4.4.0)
Using SDWebImage (4.0.0)
Using SVProgressHUD (2.1.2)
Using SnapKit (3.2.0)
Generating Pods project
Integrating client project
Sending stats
Pod installation complete! There are 5 dependencies from the Podfile and 5 total pods installed.
appledeMacBook-Pro:Weibo apple$ 

这是有效的,因为帧中的图像是灰度的。然而,相机是彩色相机,我不知道为什么我会得到灰度。如果我将上面的内容融入CV_8UC3,我会得到分段错误。

我试图用ppm_save函数保存图像,当应该有一个彩色帧时我仍然会得到一个黑白帧。有什么想法吗?

谢谢, 克里斯

1 个答案:

答案 0 :(得分:0)

请阅读有关图形文件格式等内容。 JPG需要BGR24格式。需要使用swscale将原始帧缓冲区格式YUV420P转换为BGR24。然后需要在调用之前手动设置输出帧的高度和宽度:

cv::Mat img(out_frame->height,out_frame->width,CV_8UC3,out_frame->data[0]); 
imwrite( "pic.jpg", img );

同样,PPM文件格式需要RGB24,并且在保存ppm文件之前需要将原始格式转换为此格式。

谢谢, 克里斯