计算机视觉图像编程入门
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
17
编写程序(续):
◦ 找一图像文件放到项目文件夹下,将其读入到程序: image = cv::imread("puppy.bmp"); ◦ 检查读取是否成功: if (image.empty()) { // 图像为空? std::cout << "读取图像失败!"<< std::endl; exit(EXIT_FAILURE); // 退出程序 } 窗口名 ◦ 定义窗口并显示图像: cv::namedWindow(“原始图像”); // 创建窗口(可省) cv::imshow(“原始图像”, image); // 显示图像
邹昆 cszoukun@foxmail.com
主要内容: 安装OpenCV库 读取、显示和存储图像 深入理解cv::Mat数据结构 定义ROI区域(感兴趣区域)
2
访问OpenCV官方网站http://opencv.org
下载OpenCV 3.4.2(Win pack)
3
下载exe后,运行解压,内有文件夹:
Include文件夹:内有OpenCV库头文件 x64文件夹(针对64位应用程序):
◦ build文件夹:内有编写OpenCV程序所需要的头文件、lib文件 和dll文件
vc14 文件夹:内有针对 VS2015 的 lib 文件 ( 位于 lib 文件夹下 ) 和 dll 文 件(位于bin文件夹下) vc15 文件夹:内有针对 VS2017 的 lib 文件 ( 位于 lib 文件夹下 ) 和 dll 文 件(位于bin文件夹下) 较新版本的OpenCV库只提供了针对VS2015和VS2017的64位库, 如果需要针对其他VS版本的库或是32位库,需要利用提供的源码, 自行编译生成相应版本的库
8
项目属性设置(续)
◦ 链接器
输入
添加附加依赖项
注意:
图中以OpenCV 3.4.2版本和Debug配置为例 在之前添加的库目录下,我们会看到很多lib文件,其中以d结尾 的为针对Debug的版本,其他是针对Release的版本
9
OpenCV 模块
OpenCV库分为多个模块,其中常用的模块有: ◦ opencv_core模块,包含了程序库的核心功能,特别是基 本的数据结构和算法函数; ◦ opencv_highgui模块,包含图像、视频读写函数和部分 用户界面函数; ◦ opencv_imgproc模块,包含了主要的图像处理函数; ◦ ……
14
图像坐标系统
在数字图像处理中,传统上使用原点(u=0,v=0)位于左上 角的坐标系,坐标u、v分别代表图像的列和行。对于一幅尺 寸为M×N的图像,最大的列索引是umax=M-1,最大的行索引 是vmax=N-1
15
任务:从文件中读取一幅输入图像,在窗口中显示 图像,应用一个处理函数,然后把输出图像存储到 磁盘。 准备工作:创建一个空的控制台应用程序,并按照 之前的方法设置项目属性,并添加一个cpp文件 编写程序:
窗口名
图像对象
如果imshow中指定的窗口之前未定义,则会 自动创建该窗口
18
编写程序(续):
◦ 运行下看看,能看到窗口么?Ctrl+F5管用不? ◦ 增加一个额外的highgui函数,需要用户按键才能结束程 序: // 0或缺省表示永远地等待按键,正数表示等待指定的毫秒数 cv::waitKey(0); ◦ Try again!
自行编译 OpenCV 库的方法请参照 OpenCV 安装配 置指南
6
使用Visual Studio创建空的Win32控制台应用程序
7
项目属性设置
◦ VC++目录
添加包含目录 添加库目录 注意:
opencv文件夹的位置取决于你的解压路径 库目录的设置以VS2012为例(vc11),VS2013为vc12,VS2015 为vc14,VS2017为vc15
10
OpenCV 模块(续)
每个模块都有一个对应的头文件(位于include目录中),因此 在使用这些模块时,需要在程序中包含对应的头文件,例如:
#include <opencv2/core.hpp> #include <opencv2/imgproc.hpp> #include <opencv2/highgui.hpp>
◦ sources 文件夹: OpenCV 源文件,如果需要生成其他版本的 lib和dll文件,则需要利用这些源文件,使用cmake生成相应版 本的VS项目,并编译运行
4
将OpenCV库的dll文件路径添加到环境变量Path中 (需要重启或注销一下),这样OpenCV程序运行时 才能够找到这些dll
5
从 OpenCV 3开始, OpenCV库分为两个主要部分: 第一部分是成熟的OpenCV API库,或称为标准库; 第二部分是近期加入的 OpenCV 算法库 (contrib 模 块)。官方下载的OpenCV库只包含第一部分的库, 如果要使用一些更先进的算法,就需要下载 contrib模块,并自行编译生成OpenCV库
注:其实core.hpp已经在highgui.hpp中已包含了,可不用 写出来
11
什么是数字图像?
12
wk.baidu.com
真彩图像
13
图像可以定义为二维函数 f(x,y) x, y―空间(平面)坐标 f ―强度或灰度
x,y,f 均为有限、离散量
该图像为数字图像
数字图像处理:用计算机处理数字图像
像素(Pixel):数字图像中的元素
头文件包含: #include <opencv2/core.hpp> // 核心库(可省略) #include <opencv2/highgui.hpp> // GUI库
16
编写程序(续):
main函数: ◦ 首先定义一个图像类变量: cv::Mat image; // 创建一个空图像(尺寸为0×0) ◦ 通过访问cv::Mat的属性来验证该图像大小: std::cout << "图像大小为 " << image.rows << " x " << image.cols << std::endl; 备注:需要增加头文件包含:#include <iostream> ◦ 此时运行下程序看看 看不到结果,闪退了??? Ctrl+F5试试