天天看點

opencv學習筆記(第一課):圖像,視訊顯示顯示圖像顯示視訊

知識點: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;
}
           

繼續閱讀