OpenCV學習筆記(1)-圖片顯示、視頻顯示、邊緣檢測

OpenCV學習筆記(1)

(1)圖片顯示

#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
	char *filename = "C:/Users/Administrator/Desktop/picture/1.jpg";
	Mat Image = imread(filename, IMREAD_UNCHANGED);                //從文件中讀取圖片
	if (Image.data==NULL)
	{
		return -1;
	}
	namedWindow("Example1", WINDOW_AUTOSIZE);
	imshow("Example1", Image);                                                      //顯示窗口
	waitKey(0);
	return 0;
}

(2)視頻顯示

#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
	VideoCapture capture(string("C:Users/Administrator/Desktop/picture/fff.avi"));
	if (!capture.isOpened())
	{
		std::cout << "video not open." << std::endl;
		return 1;
	}
	//獲取當前視頻幀率
	double rate = capture.get(CV_CAP_PROP_FPS);
	//當前視頻幀
	Mat frame;
	//每一幀之間的延時
	//與視頻的幀率相對應
	int delay = 1000 / rate;
	bool stop(false);
	while (!stop)
	{
		if (!capture.read(frame))
		{
			cout << "no video frame" << endl;
			break;
		}
		//此處爲添加對視頻的每一幀的操作方法
		int frame_num = capture.get(CV_CAP_PROP_POS_FRAMES);
		cout << "Frame Num : " << frame_num << endl;
		if (frame_num == 20)

		{
			capture.set(CV_CAP_PROP_POS_FRAMES, 10);
		}
		imshow("video", frame);
		//引入延時
		//也可通過按鍵停止
		if (waitKey(delay)>0)
			stop = true;
	}
	//關閉視頻,手動調用析構函數(非必須)
	capture.release();
}

注:一開始視頻顯示不了,隨後通過查閱資料發現,整個項目缺少Opencv_ffmpeg_64.dll文件,放入項目中即可。
(3)邊緣檢測

#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
	Mat ImageIn;                                 
	VideoCapture cap(0);                                    //從攝像頭中讀取圖像數據
	while (true)
	{
		cap >> ImageIn;
		imshow("ExampleIn", ImageIn);                                                      
		Mat ImageOut1;
		Canny(ImageIn, ImageOut1, 40, 140, 3, true);       //邊緣檢測
		imshow("ExampleOut1", ImageOut1);
		waitKey(20);
	}
	return 0;
}

上面絕大多數代碼都是我在學習《學習OPenCV3》時參(chao)考(xie)的代碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章