opencv 2.x学习笔记(一)加载和显示图像
来源:互联网 发布:四等水准测量算法 编辑:程序博客网 时间:2024/04/30 02:16
opencv即计算机视觉库,其中封装了许多关于图像处理和计算机视觉算法的函数,为我们的使用提供了极大的便利性。图像操作是opencv中最基本的操作。作为入门的第一篇,下面首先简单的介绍一下,如何加载和显示一张图像。
源代码:
#include <iostream>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>using namespace std;using namespace cv;int main(int argc, char* argv[]){if( argc != 2 ){cout << "Usage: dispay_image ImageToLoadAndDisplay" << endl;return -1;}Mat image;image = imread( argv[1], CV_LOAD_IMAGE_COLOR );if( !image.data ){cout << "Could not open or find the image" << std::endl;return -1;}namedWindow( "Display window", CV_WINDOW_AUTOSIZE );imshow( "Display window", image );waitKey(0);return 0;}
分析:
opencv 2.x采用了多模块的结构。每一个模块集中解决某一类问题。在使用这些模块之前,我们应该首先包含该模块的头文件。例如,在本程序中使用到了两个opencv头文件,分别对应core模块和highgui模块。
- core模块:opencv的核心功能模块,报了了opencv的基本数据结构等。
- highgui模块:高层GUI图形用户界面,包含媒体的I/O输出,视频捕捉、图像和视频的编码解码、图形交互界面的借口等内容。
为了避免opencv中的数据结构和函数名称与其他类库中的名称发生冲突,opencv提供了cv名称空间。我们可以在程序开始处使用using指令来声明cv名称空间。或者使用cv::前缀来使用opencv所提供的数据结构和函数。
下面进入主函数进行分析。
为了确保我们能够获得一个有效的图像名称,我们使用了argc参数进行判断。如下所示:
if( argc != 2 ){cout << "Usage: dispay_image ImageToLoadAndDisplay" << endl;return -1;}
(注:对argc和argv不了解的可以参考http://www.cnblogs.com/avril/archive/2010/03/22/1691477.html)
接着,我们创建了一个Mat对象用来存储用来加载的图像。
我们使用imread函数来加载图像,该函数有两个参数,第一个参数指示要加载的图像名称,第二个参数为加载图像类型,可以有以下几种方式。
- CV_LOAD_IMAGE_UNCHANGED:这个标识在新版本中被废置了,忽略。
- CV_LOAD_IMAGE_ANYDEPTH:若载入的图像的深度为16位或者32位,就返回对应深度的图像,否则,就转换为8位图像再返回。
- CV_LOAD_IMAGE_COLOR: RGB格式来加载图像。
- CV_LOAD_IMAGE_GRAYSCALE:始终将图像转换成灰度1
- WINDOW_NORMAL:用户可以改变窗口的大小。
- WINDOW_AUTOSIZE:窗口大小自动调整以适应所显示的图像,不能够手动改变窗口大小。
最后,我们需要使用imshow函数来更新opencv窗口以显示我们要加载的图像,我们只需要传递窗口的名称,和Mat对象。
我们想要当用户按下一个按钮后,窗口才消失。否则,窗口会一闪而过。我们使用waitKey函数来实现。这个函数只有一个参数,表示我们想要等待的毫秒数,0表示将一直等待下去。
程序运行结果:
0 0
- opencv 2.x学习笔记(一)加载和显示图像
- Python3+OpenCV学习笔记(一):图像加载、显示和保存
- OpenCV学习笔记(一):图像显示
- opencv学习笔记(一)——图像加载、显示、输出
- opencv学习笔记 一 载入、显示和保存图像
- OpenCV笔记(三)加载、显示图像
- OpenCV学习笔记(一)图像的载入,显示和输出
- 【OpenCV学习笔记】一、装载、 显示和存储图像及在图像上绘图
- OPENCV笔记(一)图像显示
- OpenCV学习笔记(基于OpenCV 2.4)二:图像的加载显示及简单变换
- 【OpenCV学习笔记】【函数学习】十一(读入图像﹑显示图像和保存图像)
- opencv 2.x学习笔记(六) 扫描、遍历图像
- OpenCV 2 学习笔记(4): 加载,显示和保存图像,Mat类与IplImage类
- OpenCV学习(一)显示图像
- opencv 2.x学习笔记(二)修改和保存图像
- OpenCV 学习笔记(1)显示图像
- 学习opencv(一)--图像显示
- Opencv学习笔记-显示图像
- Android 4.4 KitKat 使用Chrome DevTools 远程调试WebView
- Hibernate对象关系映射---一对一
- NeHe的OpenGL教程 lesson1-5 学习心得
- leetcode:Longest Valid Parentheses
- HDU 1394 Minimum Inversion Number
- opencv 2.x学习笔记(一)加载和显示图像
- POJ 1321:棋盘问题
- interface接口
- OCP 1Z0 053 94
- Android应用之——自定义控件ToggleButton
- PHP错误抑制符(@)导致引用传参失败的Bug
- 杞人忧天印度担忧中国控制南海后将力量投向印度洋
- hdu 4082
- grep技巧(-r):在某一目录下递归[所有子目录]查找某一字串:+文件路径