2017-06-02 71 views
0

黑白图像,我使用的ffmpeg从该extract_mvs.c:随着FFmpeg的例子extract_mvs.c,我正在从彩色摄像机RTSP

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函数保存图像,当应该有一个彩色框架时,我仍然会得到一个黑白框。有任何想法吗?

谢谢, 克里斯

回答

0

刚刚看了一下图形文件格式和这样。 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的文件之前要转换此。

谢谢, Chris