最近想要学习一下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;
}