0%

OpenCV-C++学习笔记其二:使用opencv读取照片并显示

当开始学习每一门不同的语言的时候,要做的第一件事情就是输出一个“hello world”。对于opencv来说,入门第一件事就是如何读取一张照片。

1,imread():获取照片

在opencv中,主要用imread()函数来读取照片,函数用法如下:

20230828160737

其中filename是要读取图片文件的存储路径,如“..//test.jdg”。这里的路径用字符串的形式输入。而imread函数另一个参数flag怎是用来选择读取照片的格式,如下:

20230828161111

各种读取格式可在opencv的官网进行查看,如果不写flag参数则读取原照片,而常用的则是IMREAD_GRAYSCALE(将照片灰度化)

2,namedwindow():创建窗口

在显示照片之前,我们可以直接使用imshow()显示照片,但为了刚方便对显示的照片进行操作,我们先用namedwindow()创建一个空白窗口,并对窗口进行属性设置:

20230828162022
20230828161900

3,imshow():显示图片

imshow()和namedwindow()用法基本一样,首先选择使用哪个名字的窗口,如果没有该名字的窗口则会自己创建一个:

20230828162340

另外,有一个几乎和imshow()绑定使用的函数是waitKey(),这个函数是用来决定程序停止的时间。如果是waitKey(0),程序会一直等待直到检测到键盘有新的任意输入。

4,waitKey():

20230829145405

waitKey()需要输入的参数是要等待的时间,单位为毫秒。在等待期间可以获取按键值,例如像这样写:

1
2
key = waitKey(5000) // 在5000毫秒内等待接收按键值,比如“q” ;如果没 
有检测到按键才返回-1,然后继续执行后面的程序

上述函数可结合以下例子进行食用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "opencv2/opencv.hpp"
#include "iostream"

using namespace cv;
using namespace std;

int main(){
Mat img,imgGray; // 创建矩阵,类似于创建变量来保存下面读取的图片信息
string path_string = "..//1.jpg";

img = imread(path_string,IMREAD_COLOR); // 彩色图
imgGray = imread(path_string,IMREAD_GRAYSCALE); //转为灰度图

namedWindow("img",WINDOW_AUTOSIZE); // 自动调整大小
namedWindow("imgGray",WINDOW_NORMAL); // 可拖拉放大

imshow("img",img);
imshow("imgGray", imgGray);

waitKey(0); // 无限等待按键输入,按键后程序完成,进程结束
}