第一个程序
在 上一篇 中,我们运行了一个程序,显示一张图片:
其实不要看短短几行就实现了这个功能,但背后的工作其实是非常复杂繁多的。我们一点点来解释。
首先第一行,是一个 #include
声明:
其实 OpenCV
是有很多模块的,各个模块都有其对应的头文件,而 opencv.hpp
这个头文件就包含了各个模块的头文件,所以这是一个最简洁的写法。
然后可能会有人指出,我在 之前的一篇博客 中,不是说不要使用 using namespace 吗?为什么这里又出现了呢?这是因为我是为了写一个 demo,我就是最终的用户了啊!不违背我的原则 =v=
接下来,声明并初始化了一个 Mat
对象,这个 Mat
对象是 OpenCV
中的 n 维密集数值阵列,可用于储存矩阵、灰度或彩色图像等,我们暂时不深入去了解它,这个部分会放到后面。
初始化调用了一个函数 imread,我们来看看这个函数的声明:
这个函数从一个文件中加载图片,第一个参数是文件名,第二个参数是打开的模式,它有一个缺省值 IMREAD_COLOR
,代表将图像转换为三通道的彩色图像,一般使用默认值即可,想了解更多模式可以看 这里。
然后是一个 imshow 函数,这个函数会创建一个窗口并显示图像,我们看看它的函数声明:
第一个参数代表窗口的标题,第二个参数代表储存图像的对象。
最后是一个 waitKey 函数,它的函数声明是这样的:
它用于等待用户输入一个键并返回,delay
代表等待的毫秒数,缺省值为 0,当 delay
为非正数(<=0)时,代表的就是无限等待直到用户输入一个键。
以上就是这部分代码的介绍,其中,imread
属于图像读写部分,可以在 这里 查看更多相关函数的信息;imshow
和 waitKey
属于 GUI 部分,可以在 这里 查看更多相关函数的信息。
图像处理
我们有了一些直观的认识之后,在来一些感观的认识。官网给出了非常多的关于图像处理的 教程,我们可以都尝试一下,并且它每个例子下面都会有 Explanation
,可谓是非常良心了。如果看英文不顺利的童鞋,可以看对应的中文网的教程,会有一些出入,但大体上差不多。
视频处理
我们也可以用一个简短的程序,就能实现一个视频的读取:
运行后它就能像一个播放器一样“播放”整个视频啦!
试试看把
这一句改成
会发生什么吧 ^_^
更多视频处理相关内容可以看 这里 哦!
结语
OpenCV
毕竟是一个库,我们学习它,没必要像教科书式的,按顺序去学习它的各个模块、功能。我们想做什么,就直接去做,要用到什么,我们就查文档、查资料。在实践中学习,也是快速成长的一种方式。