opencv3.2.0實現連續圖片合成avi視頻


##名稱:利用videowriter實現多張連續圖片合成avi視頻 ##平台:QT5.7.1+OpenCV3.2.0 ##日期:2017年12月10日 /**************新建QT控制台程序**************/ #include <QCoreApplication> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream>
using namespace std; using namespace cv; int main() { Mat image; char filename[75]; //定義數組,其中數組大小大於等於圖片的個數
    int isColor = 1;   //如果為0 ,可輸出灰度圖像
    int fps = 10;      //設置輸出視頻的幀率 //int frameWidth = image.cols; //單幀圖片的寬 //int frameHeight = image.rows; //單幀圖片的高
 VideoWriter writer("/home/ttwang/images/video_out.avi", VideoWriter::fourcc('M', 'J', 'P', 'G'), fps, Size(640, 360),isColor); for(unsigned int i=0;i<1000;i++) { sprintf(filename,"/home/ttwang/images/image%d.jpg",i);//第二個參數是指定圖片路徑和圖片名的一般式(image%d)
        image=imread(filename);//導入圖片
        if (image.empty()) { break; } waitKey(0); //cout << image.channels() << endl; //為了解決問題而打印查看圖片的通道 //cout << image.size() << endl; //為了解決問題而打印圖片的尺寸
        writer.write(image); //  } }
錯誤調試分析:

#起初定義單幀圖片尺寸時,讀取原圖的行和列,如下定義時: int frameWidth = image.cols;   //單幀圖片的寬
int frameHeight = image.rows;  //單幀圖片的高
 #VideoWriter的參數Size()如是這樣讀: Size(frameWidth,frameHeight) #出現如下錯誤: OpenCV Error: Assertion failed (img.cols == width && img.rows == height && channels == 3) in write, 
file /home/ttwang/opencv-3.2.0/modules/videoio/src/cap_mjpeg_encoder.cpp, line 829 調試語句: #1.打印圖片的通道數看是否為3 cout << image.channels() << endl; 打印輸出:3 說明沒有錯誤 #2.可能是單幀尺寸不對, cout << image.size() << endl; 打印輸出:640X360 為此將Size()的參數改為 Size(640,360) 編譯通過 對於為什么我那樣定義是錯的,始終沒有搞明白,希望有人解答

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM