OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
samples/cpp/videowriter_basic.cpp

使用 VideoCapture 和 VideoWriter 類的示例

#include <opencv2/core.hpp>
#include <iostream>
#include <stdio.h>
using namespace cv;
using namespace std;
int main(int, char**)
{
Mat src;
// 使用預設攝像頭作為影片源
VideoCapture cap(0);
// 檢查是否成功開啟
if (!cap.isOpened()) {
cerr << "ERROR! 無法開啟攝像頭\n";
return -1;
}
// 從攝像頭獲取一幀,以瞭解幀大小和型別
cap >> src;
// 檢查是否成功開啟
if (src.empty()) {
cerr << "ERROR! 獲取到空白幀\n";
return -1;
}
bool isColor = (src.type() == CV_8UC3);
//--- 初始化 VIDEOWRITER
VideoWriter writer;
int codec = VideoWriter::fourcc('M', 'J', 'P', 'G'); // 選擇所需的編解碼器(必須在執行時可用)
double fps = 25.0; // 建立的影片流的幀速率
string filename = "./live.avi"; // 輸出影片檔案的名稱
writer.open(filename, codec, fps, src.size(), isColor);
// 檢查是否成功開啟
if (!writer.isOpened()) {
cerr << "無法開啟輸出影片檔案進行寫入\n";
return -1;
}
//--- 獲取和寫入迴圈
cout << "正在寫入影片檔案: " << filename << endl
<< "按任意鍵終止" << endl;
for (;;)
{
// 檢查是否成功開啟
if (!cap.read(src)) {
cerr << "ERROR! 獲取到空白幀\n";
break;
}
// 將幀編碼到影片檔案流中
writer.write(src);
// 顯示即時影片並等待足夠長時間的按鍵以顯示影像
imshow("Live", src);
if (waitKey(5) >= 0)
break;
}
// 影片檔案將在 VideoWriter 解構函式中自動關閉和釋放
return 0;
}
n 維密集陣列類
定義 mat.hpp:830
MatSize size
定義 mat.hpp:2187
cv::getTickFrequency
double getTickFrequency()
int type() const
返回矩陣元素的型別。
用於從影片檔案、影像序列或攝像頭捕獲影片的類。
Definition videoio.hpp:772
virtual bool read(OutputArray image)
抓取、解碼並返回下一個影片幀。
virtual bool isOpened() const
如果影片捕獲已初始化,則返回 true。
影片寫入類。
定義 videoio.hpp:1071
virtual bool open(const String &filename, int fourcc, double fps, Size frameSize, bool isColor=true)
初始化或重新初始化影片寫入器。
virtual void write(InputArray image)
寫入下一個影片幀。
virtual bool isOpened() const
如果影片寫入器已成功初始化,則返回 true。
CV_8UC3
#define CV_8UC3
int main(int argc, char *argv[])
定義 highgui_qt.cpp:3
定義 core.hpp:107
STL 名稱空間。