ffmpeg到opencv的格式轉換
阿新 • • 發佈:2019-01-22
首先通過ffmpeg的sws_scale函式可以將原視訊格式轉換為YUV格式,儲存在AVPicture結構體裡,而AVPicture結構體裡的data成員即儲存著視訊資料,下面通過一段程式碼就可以將YUV格式的視訊轉換成opencv的Mat 格式:
Mat mYUV(c->height + c->height/2, c->width, CV_8UC1, * pict.data);//<span style="font-family: Arial, Helvetica, sans-serif;"> pict.data即為視訊的資料</span> Mat mRGB(c->height, c->width, CV_8UC3); cv::cvtColor(mYUV,mRGB,CV_YUV2BGR_YV12);
這一工作花費了我大半天的時間,以為這種格式轉換很複雜,其實很簡單:只要得到原視訊的資料data,就可以用此data初始化任何庫的影象容器,因為即便是各個庫的圖片容器不一樣,但是視訊的資料格式確實一樣的,YUV的就是YUV的,RGB的就是RGB的,只要我能得到這個“資料”,就能用此資料初始化任何圖片容器,這個過程也就是拿這些資料去填充容器,容器雖然不一樣,但是資料一樣