最近想要学习一下Opencv,打算以此来记录一下自己的学习生活。

话不多说,我们直接开冲!!!

(对了,我由于也在学习C++,说以全部都是用的C++编程的,有不对的,还请前辈们至正。)
1、首先是引入头文件(输入和输出流的头文件,以及opencv的头文件)和添加命名空间。

//头文件
#include<opencv2/opencv.hpp>
#include<iostream>

//命名空间
using namespace cv;
using namespace std;

2、主函数main()

2.1 通过imread()函数,读入电脑里面的指定照片。

注意:opencv中的图片都是保存在Mat类型的变量中,Mat表示矩阵;

IMREAD_GRAYSCALE表示灰度图像(也可以不加)

Mat src = imread("D:/images/gakki1.jpeg",IMREAD_GRAYSCALE);//IMREAD_GRAYSCALE表示灰度图像

语句中的"D:/images/gakki1.jpeg",对应的是我的图片路径
2.2 加入if语句,判断是否正确读入照片

if (src.empty())
	{
		cout << "不能加载图片!!!" << endl;
		return -1;
	}

2.3 创建窗口,并且输出图片

//创建窗口,WINDOW_FREERATIO代表可以输出任意大小的图片
	namedWindow("输入窗口1", WINDOW_FREERATIO);

	//imshow(参数1,参数2),参数1表示窗口名称;参数2表示输入的对象
	imshow("输入窗口1", src);

这里我用nameWindow()函数创建了一个名为“输入窗口1”的窗口;WINDOW_FREERATIO代表可以输出任意大小的图片,如果不加这个,输出的图片好像不能用鼠标调整大小;

这里我用imshow()函数在“输入窗口“中显示刚刚引入的图片。

2.4 延迟图片显示

//0表示一直阻塞,这样子就会使显示的图片一直显示;1表示停顿一毫秒,然后往下执行;100表示100毫秒
	waitKey(0);

这里我用了waitKey()函数将输出的窗口进行停顿,如果参数是0,表示一直阻塞;如果参数是100,表示阻塞100毫秒等等。

2.5 销毁前面创建的窗口

//对前面创建的显示窗口全部销毁掉
	destroyAllWindows();

3、完整代码

#include<opencv2/opencv.hpp>
#include<iostream>

//命名空间
using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
	//opencv中所有的图片都保存在Mat类的变量中,Mat表示矩阵
	//图像完整路径
	//Mat src = imread("D:/images/gakki1.jpeg");
	Mat src = imread("D:/images/gakki1.jpeg",IMREAD_GRAYSCALE);//IMREAD_GRAYSCALE表示灰度图像

	if (src.empty())
	{
		cout << "不能加载图片!!!" << endl;
		return -1;
	}

	//创建窗口,WINDOW_FREERATIO代表可以输出任意大小的图片
	namedWindow("输入窗口1", WINDOW_FREERATIO);

	//imshow(参数1,参数2),参数1表示窗口名称;参数2表示输入的对象
	imshow("输入窗口1", src);

	//0表示一直阻塞,这样子就会使显示的图片一直显示;1表示停顿一毫秒,然后往下执行;100表示100毫秒
	waitKey(0);

	//对前面创建的显示窗口全部销毁掉
	destroyAllWindows();
	return 0;
}