opencv中的视频数据
video data in opencv
有人能告诉我用ffmpeg解码后,视频数据以什么格式保存在opencv中吗。我的意思是,如果它被保存为矩阵,那么它是8比特/像素的东西吗?如果有人能提供一些文件或链接详细解释将是一个很大的帮助。我也试着用谷歌搜索,但找不到相关的东西。
谢谢。
要检查的决定性引用可能是代码本身!查看文件modules/highgui/src/cap_ffmpeg_impl.hpp
中的函数CvCapture_FFMPEG::open
。该方法由例如cvCaptureFromAVI()
和cvCaptureFromFile()
调用。下面摘录的代码清楚地从文件中获得了宽度和高度,但它忽略了输入位深度,并始终使用内存中视频的压缩8:8:8位RGB表示(如PIX_FMT_BGR24
常数所示):
#if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(52, 111, 0)
int err = avformat_open_input(&ic, _filename, NULL, NULL);
#else
int err = av_open_input_file(&ic, _filename, NULL, 0, NULL);
#endif
.......
#if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(53, 3, 0)
avformat_find_stream_info(ic, NULL);
#else
av_find_stream_info(ic);
#endif
.......
avpicture_fill( (AVPicture*)&rgb_picture, rgb_picture.data[0],
PIX_FMT_BGR24, enc->width, enc->height );
CvCapture_FFMPEG::retrieveFrame
中的以下代码提供了这种情况的进一步证据:
img_convert_ctx = sws_getCachedContext(
NULL,
video_st->codec->width, video_st->codec->height,
video_st->codec->pix_fmt,
video_st->codec->width, video_st->codec->height,
PIX_FMT_BGR24,
SWS_BICUBIC,
NULL, NULL, NULL
);
查看ffmpeg文档,此调用中的PIX_FMT_BGR24
指定目标像素格式,即将移交给opencv的内容。
相关文章:
- 在c代码之间共享数据的最佳方式
- 如何在c++中录制具有精确帧时间戳的视频
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 为什么字符串的 move() 会改变内存中底层数据的位置?
- 很好的语法来获取对向量/数组数据的大小引用?
- 在C++中查找像素 RGB 数据的最快方法是什么?
- C++ 11 中的锁定是否保证访问数据的新鲜度?
- 内联静态数据的初始化
- Writefile() 无法写入数据,具体取决于数据的长度
- 我可以存储数据的地方/C++,Linux,QtCreator
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 在 c++ 中解析数据包数据的最佳方法是什么?
- 处理编译器关于可能丢失数据的警告的最优雅方法是什么
- 如何使用FFMPEG与C拦截编码的视频数据
- 寻求使用 FFmpeg 在 mp4 容器中 h264 编解码器的视频帧.数据包 pts 始终为 0
- C++使用视频数据和视频设备的优势
- opencv中的视频数据
- 在c++服务器上处理用WebRTC (Socket.IO)捕获的视频数据