![](/img/trans.png)
[英]OpenCV how to encode and send data of webcam video stream efficiently?
[英]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的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.