知識點:mat類型指派運算,隻是引用,需要使用src.clone()才能進行複制。
顯示圖像
讀取檔案:cv::imread()
複制圖像:Mat::clone()
建立視窗:cv::nameWindow()
顯示圖像:cv::imhsow()
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{
Mat src,_src;
const char src_dir[] = "E:\\Project\\C\\myProject\\data\\000001.jpg";
vector<string> files;
src = imread(src_dir); //讀取圖檔
if (!src.data)
{
cout << "no img input...\n" << endl;
return -1;
}
_src = src.clone(); //複制圖檔
namedWindow("1", WINDOW_KEEPRATIO); //建立視窗
imshow("1", _src); //顯示圖檔
waitKey(0);
return 0;
}
顯示視訊
VideoCapture類:視訊捕捉類,該語句執行個體化了一個對象inVid。這個類可以打開和關閉視訊檔案。這個對象可以打開和關閉ffmpeg支援的所有類型的視訊檔案。可以通過inVid.open()打開視訊。
cv::WaitKey()函數:不斷重新整理圖像,頻率時間為delay,機關為ms。
傳回值為目前鍵盤按鍵值。
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{
Mat in_frame, out_frame;
const char win1[] = "Grabbing...";
const char win2[] = "Recoding...";
double fps = 30;
VideoCapture inVid(0); //打開電腦自帶的相機
if (!inVid.isOpened())
{
cout << "Error! Camera not ready...\n";
return -1;
}
namedWindow(win1);
namedWindow(win2);
while (1)
{
inVid >> in_frame; //将inVid内容傳入in_frame
imshow("Video", in_frame);
if (waitKey(1000 /fps) >= 0 ) //設定顯示的頻率
break;
}
inVid.release(); //釋放視訊檔案或視訊裝置
return 0;
}