opencv

OpenCV学习笔记【一】:读入一幅图像

前言

本学期本小白上了数字图像处理这门课程,经历了安装和配置VS和OpenCV的头大过程,现在正式开启持续性头大的学习之旅。为了记录自己的学习进度,分享自己的学习心得,故在此写下这一系列笔记,内容将随着我的学习进度不断更新(如果很长时间不再更新,说明俺没了,呜呜)。

一、学习内容

今天我们学习如何读取和显示图像。在给出代码的同时,我会对代码进行分析,希望能帮助大家理解每一行代码的作用。

二、读取图片代码

1.代码

#include<opencv2/opencv.hpp>   
using namespace cv;           
void main()
{
	Mat srcImage = imread("1.png");
	imshow("原始图像", srcImage);
	waitKey(0);
}

2.分析

#include<opencv2/opencv.hpp>

因为opencv.hpp已经包含了OpenCV各模块的头文件,所以在编写core、objdetect、imgproc、photo、features2d、calib3d、m1、highgui、contrib模块的应用程序时,原则上仅写一句“# include ”即可。

内容参考:https://blog.csdn.net/Sophia_11/article/details/83870126

using namespace cv;           

这行代码的作用是开启cv命名空间。OpenCV的函数都位于cv这一命名空间下,为了调用OpenCV的函数,需要在每个函数前加上cv::,向编译器说明你所调用的函数处于cv命名空间。为了摆脱这种繁琐的工作,可以使用using namespace cv;指令,告诉编译器假设所有函数都位于cv命名空间下。如果没有这一句,本段代码将会是这样子的:

#include<opencv2/opencv.hpp>            
void main()
{
	cv::Mat srcImage = cv::imread("1.png");
	cv::imshow("原始图像", srcImage);
	cv::waitKey(0);
}

很明显,开启cv命名空间可以降低我们的工作量(起码不用疯狂重复cv::了)

void main()

定义无返回值的main函数。

Mat srcImage = imread("1.png");

Mat是用来保存图像以及其他矩阵数据的数据结构, 默认情况尺寸为0;本行代码意思是将1.png存放在srcImage这个矩阵中。对了,此时是将1.png这个图像放在了这个工程文件所在目录下,如果图片不是在工程目录文件下放置,需要改为路径:D:/opencv_pro/opencv/1.png (这个是我的路径,图片放在哪儿就用哪个路径)。

imshow("原始图像", srcImage);

imshow用来显示显示图像,”原始图像”为显示的窗口名称,srcImage为要显示图像的矩阵。

waitKey(0);

waitKey(delay)为延时函数。delay = 0 时,延时无限长,必须有键按下才继续执行。即我们运行上述代码后,图像持续地显示出来,在电脑上按下一个键后,图像才会关闭。

3.运行结果

代码运行结果如下:代码运行结果如下图:

总结

以上就是今天的学习内容,欢迎大家批评指正。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2022年3月24日
下一篇 2022年3月24日

相关推荐