计算机视觉技术 课件 第2章 OpenCV基本使用_第1页
计算机视觉技术 课件 第2章 OpenCV基本使用_第2页
计算机视觉技术 课件 第2章 OpenCV基本使用_第3页
计算机视觉技术 课件 第2章 OpenCV基本使用_第4页
计算机视觉技术 课件 第2章 OpenCV基本使用_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章:OpenCV基本使用使用OpenCV读取图像编写第一个OpenCV程序OpenCV环境配置了解OpenCV的基础知识3.Pillow模式转换的函数是()A

changeto().Bconvert().Cpoint().Dmerge()4.色彩分离的函数是()A

open().Bimsplit()Csplit()Dmerge()复习1.

Pillow读取图像的函数是()A

imread().Bread().Copen()Dimopen()2.Pillow保存图像的函数是()A

save()B

imsave()Cwrite().Dimwrite()01了解OpenCV的基础知识OpenCV是什么OpenCV

OpenCV是一个开源的跨平台计算机视觉和机器学习软件库。由一系列C和C和少量C++类构成,实现了图像处理和计算机视觉方面很多通用的算法OpenCV与其他视觉函数库的性能比较OpenCV优点OpenCV

能方便地与基于Python的其他软件库集成,如NumPy、SciPy、Matplotlib等。简化了计算机视觉程序和解决方案的开发。拥有包括300多的跨平台的中、高层API。OpenCV具有优秀的性能表现,运行速度快。跨平台:运行在Linux、Windows、Android和MacOS操作系统上OpenCV能够

使用OpenCV

,可以完成读写图像捕获并保存视频过程图像(过滤,变换)执行特征检测在视频或图像中检测特定对象,如面部,眼睛,汽车。分析视频,即估计其中的运动,减去背景并跟踪其中的对象。OpenCV主要应用领域OpenCV模块

OpenCV的基本单元是模块,每个模块都包含了大量函数。Core:核心功能模块,模块主要包含OpenCV库的基础结构以及基本操作,例如OpenCV基本数据结构、绘图函数、数组操作相关函数、动态数据结构等Imgproc:图像处理模块,提供基本的图像处理功能,包括滤波以及类似的卷积操作。GPU:GPU加速库,提供基于CUDAGPU上的优化加速。。dnn:深度神经网络模块,支持主流深度学习框架训练生成与导出的模型.Feature2d:2D功能框架,包含用于检测、描述、特征匹配等算法。Ml:机器学习模块,包含了大量的统计模型和机器学习算法实现,如K-近邻、支持向量机、决策树、神经网络等。Objdectect:目标检测模块,包含人脸识别、行人检测等算法,也可用于训练检测器。第二章:OpenCV基本使用使用OpenCV读取图像编写第一个OpenCV程序OpenCV环境配置了解OpenCV的基础知识02OpenCV的环境配置2.1python安装2.2开发工具安装2.3OpenCV安装OpenCV环境配置Python安装Python的版本可分为Python2.x和Python3.x两大类,简称Python2和Python3。Python3是当前主推的Python版本,Python2.7已于2020年1月1日终止支持首先获得python,访问Python官方网站下载Python3.6,下载完成后直接运行安装即可。OpenCV环境配置环境管理工具安装使用环境管理工具Anaconda和集成开发环境PyCharm协助开发。Anaconda是开源的Python发行版本和环境管理器。Anaconda集成了包括Conda、Python在内的大量工具库,支持包括NumPy、OpenCV、TensorFlow等常用人工智能开发依赖库的环境配置。Anaconda官网下载安装包,即可进行安装。PyCharm是一款专为Python打造的IDE,带有一整套可以帮助用户提高开发效率的工具,如解释器配置、代码调试、语法高亮、项目管理、代码跳转、智能提示、代码自动补全、单元测试、版本控制等。OpenCV环境配置安装OpenCV1、在线安装。双击打开Anaconda,选择“Environments”,点击列表左下角的“Create”按钮新建一个Python环境,填写Python版本。OpenCV环境配置安装OpenCV1、在线安装。在新环境的未安装依赖库列表中搜索OpenCV并进行安装,安装过程中会一并安装一些依赖包,直接点击“Apply”按钮等待安装完成即可。OpenCV环境配置安装OpenCV1、在线安装。安装完成后,“OpenCV”库会出现在新环境的已安装列表中。OpenCV环境配置

安装OpenCV2、本地安装。如果网络状态不佳,在线安装方式有可能导致失败,因此可以采用本地安装的方式访问OpenCV官网,提前下载好对应版本的安装包。打开Anaconda,点击选择已经建立的环境,在弹出的菜单中,选择“openterminal”,打开命令行工具OpenCV环境配置安装OpenCV2、本地安装。使用命令行工具定位到安装包所在目录,输入指令“pipinstall安装包文件名”即可开始本地安装。第二章:OpenCV基本使用使用OpenCV读取图像编写第一个OpenCV程序OpenCV环境配置了解OpenCV的基础知识编写第一个OpenCV程序03编写OpenCV第一个程序新建项目打开PyCharm,选择“CreateNewProject”进入新项目创建界面,选择“PurePython”项目类别。指定项目存放位置“Location”,项目解释器“ProjectInterpreter”选项选择“Existinginterpreter”,二级下拉选择之前已经创建好的Anaconda环境名称。完成后点击“create”完成创建编写OpenCV第一个程序开始程序编写第一个OpenCV程序将编写实现读取、显示和保存图像的简单程序。该程序将实现图像的读取,图片的显示功能,图片名称为cat.jpg。事先保存在项目所在的目录中。OpenCV环境配置

代码分析:importcv2,和NumPy和Pillow一样,使用OpenCV之前,要先引入软件库。此处引入的模块名称是cv2,意指相对于旧版本cv的升级版本。旧版本cv使用C语言开发,内部是面向过程的实现方式,而cv2使用C++语言,内部采用面向对象的编程方式。imread()函数用于读取图像;namedWindow()函数用于创建窗口,参数“cat”表示新建名称为“cat”的窗口,参数“1”表示窗口不可调整大小;imshow()用于将图像显示在窗口中;参数“cat”表示显示在“cat”窗口。第2个参数表示将要显示的图像文件。waitKey()是等待按键的语句,可以让图像窗口一直显示,直到任意按键被按下后继续执行。destroyAllWindows()函数,表示关闭所有OpenCV创建的窗口。第二章:OpenCV基本使用复习分享时间OpenCV基本操作使用4.1图像读取4.2图像转换4.3色彩分离与合并04imread(filename[,flags])→retval

4.1

图像读取

OpenCV的imread()用于读取图像:函数说明:(1)retval是读取到的图像对象,在OpenCV中是Mat类型;(2)参数filename是将要读取的图像文件名;函数imread()支持大部分图像格式,常用的包括位图(*.bmp、*.dib)、JPEG图像(*.jpg、*.jpeg)、网络图形(*.png)、TIFF文件(*.tiff、*.tif)等(3)flag是读取标记,可省略,不同标记值代表含义不同,如-1表示读取图像格式不变,0表示单通道的灰度图像,1表示三通道BGR图像,为默认值。4.1

图像读取在实际编码过程中,相较于直接使用数字方式,大家更提倡使用OpenCV常量的方式。imread()函数的flag参数取值的常量表示如表所示im=cv2.imread(“cat.jpg”)#读入图像文件

print(im.shape)#(200,200,3)

print(im.size)#120000

print(im.dtype)#uint8

4.1

图像读取

获取图像的属性信息使用imread()函数获取图像对象后,可以继续获取图像的属性信息,包括图像形状(shape)、像素数(size)、数据类型(dtype)等。解释:shape属性返回图像的行数、列数和通道数。size属性返回图像的像素数量。dtype属性返回的是图像的数据类型。4.1

图像读取【练习1】采用不同的flag读取图片,查看各自的形状、尺寸和数据类型结果:defaut(1026,1024,3)3151872uint8bgrim(1026,1024,3)3151872uint8unchange(1026,1024,4)4202496uint8grayim(1026,1024)1050624uint8完成实验报告练习1imshow(winname,mat)→None

imshow("Window1",cv2.imread("cat.jpg"))

4.2

图像显示

使用imshow()函数可以显示图像参数说明:None表示函数没有返回值;winname是窗口名称。如“Window1”。mat是图像对象。提示:如果要将窗口创建和显示分离,可以在使用imshow()函数之前,使用函数namedWindow()提前创建窗口。此处在imshow()语句前添加dWindow("Window1"),效果是一样的。例如,在窗口中显示图像cat.jpg的语句为:destroyWindow(winname)→None

cv2.waitKey(5000)

cv2.destroyWindow("Window1")

4.2

图像显示

使用destroyWindow()可以销毁图像窗口参数说明:None表示函数没有返回值;winname是要销毁的窗口名称。提示:在实际使用该函数通常搭配waitKey()函数使用。waitKey()用于监听按键事件,当监听到按键被按下,则继续执行程序,或者设置等待时间。如果要直接销毁所有OpenCV的创建的窗口,则使用destroyAllWindows()函数。如等待5秒后销毁窗口,代码为:4.2

图像显示

waitKey()和ASCII码表:waitKey(waittime)→key

#key对应ASCII码(美国信息交换标准代码)whileTrue:

ifcv2.waitKey(0)==27:

cv2.destroyAllWindows()

break监听特定按键的实例:4.2图像显示【练习2】创建一个窗口“win”,在该窗口中默认显示“cat.jpg”.持续监听键盘,如果监听到空格键(key==32),则显示图像在cat.jpg和little.png之间切换。如果监听到ESC(key==27),则销毁窗口。完成实验报告练习2

imwrite(filename,img[,params])→retval

cv2.imwrite(“lena.jpg",cv2.imread("cat.jpg"))

4.3

图像保存

imwrite()函数表示保存图片到本地参数说明:(1)retval表示返回保存图像对象,为True或False;(2)参数filename是待保存文件地址的完整路径,包含文件扩展名;(3)img是被保存的图像对象;(4)params是可选的保存参数;如将读出的cat.jpg文件保存为lena.jpg,语句为:4.1

图像读取【例】读取图片cat.jpg并显示,等待按键后执行窗口销毁、图像数据打印,并重新将图像保存为cat1.jpg。完成实验报告练习3

4.1

图像读取运行结果分析:首先读取到的图像显示出来。执行到“cv2.waitKey()”开始等待,此时按下任意按键,图像窗口会关闭。执行结果窗口打印出图像数据。图像输出数据片段如图从图中可以看出输出的像素是3个元素的数组。需要注意的是,OpenCV默认读取的三通道图像为BGR格式BGR复习1.

OpenCV读取图像的函数是?A

open()Bimread()Cload()Dimopen()2.OpenCV保存图像的函数是?A

save()Bimsave()Cimwrite()write()3.

cv2.waitKey无限等待键盘按下事件的参数是?A

cv2.waitKey(5000)Bcv2.waitKey(-1)Ccv2.waitKey(1)Dcv2.waitKey(0)im=cv2.imread("cat.jpg",cv2.IMREAD_GRAYSCALE)

4.2

图像转换(1)

转灰度图像图像处理过程中,为了减少减少数据量,提高计算效率,经常需要将彩色图转换为灰度图或二值图像。方法一:以灰度图的形式读取图片,直接将imread()函数的第2个参数设置为cv2.IMREAD_GRAYSCALE或0即可,语句为:im1=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)

4.2

图像转换4.2.1转灰度图像OpenCV也专门提供了cvtColor(),用于不同颜色模式转换的函数,函数定义为:cvtColor(src,code[,dst[,dstCn]])→dst

其中:(1)

dst:表示转换后的目标图像;(2)

src:要转换的原始图像;(3)

code:指定颜色空间转换类型编码;(4)

dstCn:表示目标图像的通道数,默认为None,即保持原图像的通道数。例如:将前面彩色图像转为灰度图像,通过该函数实现,将code参数设置为cv2.COLOR_BGR2GRAY4.2

图像转换常用cvtColor()的code参数如表所示:4.2

图像转换【例2.2】以默认方式读取图片cat.jpg,将图像转为灰度图,比较原始图像与灰度图的区别。完成实验报告练习4

4.2

图像转换代码分析:(1)OpenCV默认按照BGR的模式读取图像;(2)

通过cvtColor()函数转变为RGB模式;(3)

转变为单通道的灰度图模式。从图中可以看出,虽然BGR转变为RGB,但imshow()函数仍然按照B-G-R的通道顺序显示图像,形成了通道错位。所以,RGB格式图像在色彩上出现了明显的变化,原来的R通道显示为B通道,而原来的B通道则显示为R通道。4.2

图像转换

4.2.2转二值图像二值图像是只有“黑”和“白”两种颜色的图像,将原始图像转变为二值图像的基本原理是:设置一个阈值,将小于阈值的像素值改为0,大于阈值的像素值改为255。OpenCV的threshold()函数可以方便地实现二值图像转换。threshold函数定义threshold(src,thresh,maxval,type[,dst])→retval,dst

其中:src是原图像对象,thresh表示中间阈值,可以任意设置,范围在0到255之间。maxval是最大阈值,设置为255。type是阈值算法类型,type设置为0,表示常规的阈值算法。dst是结果数据图像,retval是阈值。4.2

图像转换【例2.3】以灰度图的方式读取图片cat.jpg,将灰度图转为二值图并显示,比较灰度图与二值图的区别。完成实验报告练习5

4.2

图像转换结果分析:采用了NumPy的hstack()函数对图像进行横向拼接的,将两个图片显示在同一个窗口中。hstack()函数可以对相同形状的图像进行横向拼接,纵向拼接要使用vstack()函数。4.3色彩分离与合并

OpenCV可以对图像进行色彩的分离与合并,其中split()函数可用于拆分图像的通道,merge()用于通道合并。split()函数定义为:split(m[,mv])→mv

式中,m是多通道数组,mv是通道矢量。如拆分1个BGR图像,可使用语句为:b,g,r=cv2.split(im)

提示:OpenCV图像通道排序顺序是“蓝色B-绿色G-红色R”,并非习惯上认为的“红色R-绿色G-蓝色B”。同时,拆分后的图像数据的维数会发生变化,不再是三维数组,而是二维数组,每个元素表示像素在拆分通道上的值。4.3色彩分离与合并

merge()用于通道合并,函数定义为:merge(mv[,dst])→dst

其中:dst是目标图像,mv是通道矢量。如要将通道b、g、r合并为BGR图像为newim=cv2.merge([b,g,r])

4.3色彩分离与合并

【例2.4】将BGR图像lena.jpg进行通道拆分,再将通过顺序变化后合并成新图像完成实验报告练习6

4.3色彩分离与合并

代码分析:(1)首先通过split()方法将RGB图像cat.jpg

拆分成b、g和r通道(2)使用merge()函数将3个通道错序合并;(3)最后通过NumPy的拼接函数对结果分别进行拼接显示。从效果图中能明显看到通道错序后的变化,图像从暖色调变成了冷色调。

NumPy与OpenCV互转NumPy

to

OpenCV由于OpenCV是基于Numpy,所以不需要额外的转换函数,就可以直接被OpenCV使用。#【

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论