OpenCV图像序列生成视频,MATLAB图像生成avi视频,image2video。
講解如何利用OpenCV合成avi格式視頻。
在處理圖像和視頻的過程中,通常會遇到將視頻轉換成圖像處理,或者將處理完的圖像合成原視頻。在基于視頻的處理過程中,通常都是先將視頻轉換為每一幀圖像,然后基于圖像去處理。OpenCV有很多關于Video2Image的相關算法代碼。注意,視頻轉圖像過程中,只要有OpenCV配置好了,正常條件下都可以轉換成圖像。不依賴其他庫,不依賴第三方庫。
將圖像轉合成視頻的過程中,需要將圖像保存在一個文件夾下,然后用OpenCV來的videowriter類來添加一幀一幀圖像,最后合成avi視頻。注意,OpenCV只能合成avi格式的視頻。按照常規步驟,就合成了視頻。但是,此時可以看到,視頻文件是生成了,但是大小是0kb。算法不會報錯,但是并沒有生成視頻。注意,這是缺少第三方庫,如下圖所示。沒有任何信息。
以上是用OpenCV生成的視頻。
?
從這里可以看出,沒有任何信息。說明沒有生成成功。
通過各種查找,需要將?opencv_ffmpeg247.dll 以及opencv_ffmpeg247_64.dll這兩個dll文件放在工程目錄下面,以及exe文檔下面。如下圖所示。 可以在這個鏈接下載這兩個文件。自己改為支持版本的名字即可。比如opencv3.1.0就將dll改為opencv_ffmpeg310.dll。??opencv_ffmpeg247圖像轉視頻庫下載?;贠penCV。
現在可以看到,生成的文件,具有大小,以及可以用了。但從最后結果看,雖然有具體大小的信息,但是在詳細信息里面,并沒有幀率,像素大小等信息,很多手機還看不了,只能借助播放器才能看,比如qq影音。
具體代碼如下:
?? ?//創建一個寫視頻類,格式設定為MJPG,還有其他格式,自己可以改;
?? ?//注意,后綴只能是avi;幀率自己可以設置,設置為50fps,或者80。都可以自己修改。
? ? //大小盡量和原始圖像保持一致。
#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <opencv2/core/core.hpp>using namespace std;
using namespace cv;int main(int argc,char **argv)
{//創建一個寫視頻類,格式設定為MJPG,還有其他格式,自己可以改;//注意,后綴只能是avi;VideoWriter writer("E:\\high_speed_vision\\rereslut_50fps.avi", CV_FOURCC('M', 'J', 'P', 'G'), 50, Size(512,512),1);//int i=0;int count=0;for (int i = 0; i <172; i++){//讀取原始圖像;Mat src=imread("E:\\high_speed_vision\\original\\"+to_string(i)+".png",1);if(src.empty()){cout<<"null"<<endl;}resize(src,src,Size(512,512));//將圖像寫入視頻;writer.write(src);namedWindow("show image");imshow("show image", src);waitKey(10);count++;}cout<<"count is:"<<count<<endl;waitKey(0);writer.release();
}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?MATLAB合成視頻? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
其實,為了可以方便的生成視頻,也可以用MATLAB來做視頻。 MATLAB寫視頻或許更方便,不需要第三方的依賴庫。
我當時的視頻在手機放不能看,雖然用OpenCV生成了視頻,但是最后還是用MATLAB來合成了視頻。代碼如下:
clc; clear all;
%定義生成視頻的名稱和位置;
writerObj = VideoWriter('tracking_50fps.avi');
%設置幀率;
writerObj.FrameRate=50;
open(writerObj);
%圖像存放地點;
pt = 'F:\video_generate\result_every\';%循環遍歷所有圖像,寫進去就是;
for k = 1:171image = imread([pt,num2str(k),'.png']);writeVideo(writerObj,image);
endclose(writerObj);
最后能看到詳細信息如下:
?
?
總結
以上是生活随笔為你收集整理的OpenCV图像序列生成视频,MATLAB图像生成avi视频,image2video。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上海欢乐谷鬼屋哪个最吓人
- 下一篇: 钻石烟多少钱一包啊?