【问题标题】:With ffmpeg's example extract_mvs.c, I am getting black and white images from color rtsp camera使用 ffmpeg 的示例 extract_mvs.c,我从彩色 rtsp 相机获取黑白图像
【发布时间】:2017-11-03 07:21:50
【问题描述】:

我正在使用来自 ffmpeg 的 extract_mvs.c:

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

我添加了opencv来imwrite图像。

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

之所以有效,是因为框架中的图像是灰度的。然而,相机是彩色相机,我不知道为什么我会得到灰度。如果我将上述内容更改为 CV_8UC3,则会出现分段错误。

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

谢谢, 克里斯

【问题讨论】:

    标签: libavcodec


    【解决方案1】:

    只需阅读有关图形文件格式等的信息。 JPG 需要 BGR24 格式。原始帧缓冲格式 YUV420P 需要使用 swscale 转换为 BGR24。那么在调用之前需要手动设置输出帧的高度和宽度:

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

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

    谢谢, 克里斯

    【讨论】:

      猜你喜欢
      • 2015-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多