《计算机视觉处理项目实战》教学课件合集_第1页
《计算机视觉处理项目实战》教学课件合集_第2页
《计算机视觉处理项目实战》教学课件合集_第3页
《计算机视觉处理项目实战》教学课件合集_第4页
《计算机视觉处理项目实战》教学课件合集_第5页
已阅读5页,还剩543页未读 继续免费阅读

下载本文档

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

文档简介

《计算机视觉处理项目实战》✩精品课件合集✩精品课件合集第X章XXXX模块1初识OpenCV什么是计算机视觉CONTENTS目录0302计算机视觉概述计算机视觉目标01计算机视觉相关学科04计算机视觉应用领域计算机视觉概述

视觉是人类观察世界、认知世界的重要功能手段。人类从外界获得的信息约有75%来自视觉系统,视觉进一步可分为视感觉和视知觉。321光的物理特性光的物理特性光的物理特性光刺激视觉感受器官的程度光作用于视网膜后经视觉系统加工而产生的感觉。计算机视觉概述论述人们从客观世界接收到视觉刺激后如何反应以及反应所采用的方式。神经中枢进行的一组活动。从狭义上说是要能对客观场景做出对观察者有意义的解释和描述。视知觉概述计算机视觉目标计算机视觉是指用计算机实现人类的视觉功能

计算机视觉的研究方法目前主要有两种:

仿生学的方法:参照人类视觉系统的结构原理

工程的方法:实现系统的功能

计算机视觉的主要研究目标可归纳成两个:

建立计算机视觉系统来完成各种视觉任务

加深对人脑视觉机理的掌握和理解计算机视觉相关学科计算机视觉应用领域工业视觉安全监控生物医学人机交互视觉导航遥感测绘虚拟现实总结0102计算机视觉概述03计算机视觉相关学科04计算机视觉应用领域计算机视觉目标如何理解图像内容CONTENTS目录0302图像及类别图像表达01图像显示04图像存储图像及类别图像:辐射强度模式的空间分布图像表达函数:辐射能量在空间分布的函数通用图像表达函数:T(x,y,z,t,l)

如:g射线图像、X射线图像、紫外线图像、可见光图像、红外线图像、微波图像、无线电波图像、交流电波图像,3-D图像、彩色图像、多光谱图像、投影重建图像……模拟图像:从连续的客观场景直接观察到用一个2-D数组f(x,y)来表示。数字图像:把连续的模拟图像在坐标空间XY和性质空间F都离散化了的图像。图像表达矩阵表达矢量表达图像显示二值图像的3种不同的显示方式:

离散点集

覆盖区域

矩阵表达图像显示图像存储

1.

图像存储器

(1)处理过程中使用的快速存储器

(2)可以较快地重新调用的在线或联机存储器

(3)不经常使用的数据库(档案库)存储器

2.

图像文件格式

(1)

BMP格式

(2)

GIF格式

(3)

TIFF格式

(4)

JPEG格式总结0102图像及类别03图像显示04图像存储图像表达什么是OpenCVCONTENTS目录0302OpenCV概述OpenCV发展历程01OpenCV应用OpenCV概述OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和MacOS操作系统上。它轻量级而且高效,由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV发展历程4.0.0发布2018年10月第一个开源版本OpenCValpha3发布2000年6月2.0beta发布,主要使用CMake构建2009年9月3.0alpha发布2014年8月CVL项目启动1999年1月正式发布OpenCV1.0版本2006年10月起源发展OpenCV应用人机互动过程实际上是一个输入和输出的过程,通过人机界面向计算机输入指令,计算机经过处理后把输出结果呈现给用户。人和计算机之间输入和输出的形式是多种多样的,因此互动的形式也是多样化的。OpenCV应用图像识别是以图像的主要特征为基础的。每个图像都有它的特征,在人类图像识别系统中,对复杂图像的识别往往要通过不同层次的信息加工才能实现。OpenCV应用图像分割人脸识别总结0102OpenCV概述03OpenCV应用OpenCV发展历程搭建开发环境OpenCV-PythonCONTENTS目录0302为什么使用Python安装OpenCV-Python01Anaconda介绍Python的特点免费、开源易读易写丰富的基础代码库解释性面向对象可扩展性可嵌入性为什么使用Python安装OpenCV-Python

在安装OpenCV-Python之前先来验证一下是否安装了Python环境,打开命令提示符,输入python回车确定。安装OpenCV-Pythonpipinstallopencv-python#如果想安装指定版本,输入代码:pipinstallopencv-python==xxx(xxx为版本号)。Anaconda介绍AnacondaAnaconda是专门为了方便使用Python进行数据科学研究而建立的一组软件包,涵盖了数据科学领域常见的Python库,并且自带了专门用来解决软件环境依赖问题的conda包管理系统。condaconda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。包管理与pip的使用类似,环境管理则允许用户方便地安装不同版本的python并可以快速切换。总结0102为什么使用Python03Anaconda介绍安装OpenCV-Python谢谢您的耐心聆听specialreportandworksummary《计算机视觉处理项目实战》✩精品课件合集✩精品课件合集第X章XXXX模块2图像处理的基本操作Numpy基础应用CONTENTS目录0102求解三元一次方程数组计算Python作为机器学习和深度学习的主流编程语言,在人工智能具体应用方面提供了丰富的库函数,也就是更多的第三方库的支持。numpy就是专用于科学计算和数据分析的最基础的函数包,其中包含了大量的工具,可以完成矩阵运算、求特征值、解线性方程、向量乘积和归一化计算等,这些功能为图像分类、数据聚类等人工智能基础应用提供了计算基础。求解三元一次方程numpy不是Python内置的第三方库,要通过下列方式安装后才可以使用。进入cmd命令窗口,使用Python自带的用于安装第三方库的pip3工具,执行以下命令:

pip3list如果结果列表中没有找到numpy库名称,说明还没有安装,就需要继续执行以下命令:

pip3installnumpy求解三元一次方程【引例】利用numpy库求解下列三元一次方程。1)引例描述求解下列三元一次方程。2)

引例分析

首先按x、y、z的次序将各未知变量的系数排成一个3×3的矩阵,同时将对应的常数项也排除一个1×3的矩阵,如下图所示。

求解三元一次方程3)引例实现实现的源代码如下。1 importnumpyasnp2 A=np.mat([[1,2,1],[2,-1,3],[3,1,2]])3 b=np.array([7,7,18])4 x=np.linalg.solve(A,b)5 print(x)求解三元一次方程3)引例实现可以将[x=7,y=1,z=-2]的值分别代回原方程组,以验证求解是否正确。或执行以下命令:

np.dot(A,x)

计算结果如下图所示。观察计算结果是否与常数项数组b一致。

求解三元一次方程数组是numpy中最基础的数据结构,N维数组对象是ndarray,它是一系列同类型数据的集合,以0下标为开始进行集合中元素的索引。ndarray对象是用于存放同类型元素的多维数组,类似于一个多行多列的表格来存放数据。数组在人工智能的数据处理方面得到广泛的应用,例如,在深度学习中,神经元之间的链接关系往往采用数组形式的参数来表示,还有对大数据的统计分析,也常常采用数组特性进行排序、去重和统计计算等,使用numpy库提供的数组操作,比常规的Python数组操作有更高的效率和更简洁的编程代码。数组计算【引例】统计鸢尾花特征值的最大值、最小值和标准差等。1)引例描述利用机器学习中常用的鸢尾花植物数据集iris,来统计花萼长度的最大值、最小值、均值、标准差和方差。2)引例分析首先利用numpy从数据集文件iris.csv中读取数据,提取花萼长度数据,然后对花萼长度特征数据进行统计计算。数组计算 1 importnumpyasnp 2 iris_data=np.loadtxt("./data/iris.csv",delimiter=",",skiprows=1) 3 print(type(iris_data)) 4 print(iris_data.shape) 5 print('花萼长度的最大值:',np.max(iris_data[:,1])) 6 print('花萼长度的最小值:',np.min(iris_data[:,1])) 7 print('花萼长度的平均值:',np.mean(iris_data[:,1])) 8 print('花萼长度的标准差:',np.std(iris_data[:,1])) 9 print('花萼长度的方差:',np.var(iris_data[:,1]))3)引例实现数组计算运行程序块,结果如下图所示。

数组计算总结0102求解三元一次方程数组计算图片读取与显示CONTENTS目录0302图像处理简介图像读取与显示01图像读取格式标志图像处理简介图像是人类视觉的基础,是自然景物的客观反映,是人类认识世界和人类本身的重要源泉。黑白的灰度图像①三个单通道颜色混合而成的彩色图像②图像处理简介图像复原和匹配图像压缩图像增强图像基本处理(滤波,二值化、形态学操作等等)图像处理(ImageProcessing)几乎都是数字图像处理(DigitalImageProcessing)),是利用计算机对图像进行处理,达到预期结果的一门技术。图像处理简介数字图像是由模拟图像数字化得到的,以像素为基本元素,可以用数字计算机或数字电路存储和处理的图像。图像读取与显示当对图像进行操作时,需要先读取一张图像,在OpenCV库中使用函数cv2.imread()读入一张图像。imread()函数用于将文件中的图像读入内存,imread()函数支持各种静态图像文件格式,如BMP、PNG、JPEG和TIFF等。cv2.imread(filename,flags)值描述filename图像文件名flags读入图片的标志cv2.IMREAD_COLOR默认参数,读入彩色图片,忽略alpha通道,可以以1指定cv2.IMREAD_GRAYSCALE读入灰度图片,可以以0指定cv2.IMREAD_UNCHANGED读入完整图片,包括alpha通道图像读取格式标志图像读取格式标志说明cv2.IMREAD_UNCHANGED按原样加载图像cv2.IMREAD_GRAYSCALE将图像转换为单通道灰度图像cv2.IMREAD_COLOR将图像转换为3通道BGR彩色图像cv2.IMREAD_ANYDEPTH当图像具有相应的深度时,返回16位或32位图像,否则将其深度转换为8位cv2.IMREAD_ANYCOLOR以任何可能的颜色格式读取图像cv2.IMREAD_LOAD_GDAL使用gdal驱动程序加载图像cv2.IMREAD_REDUCED_GRAYSCALE_2将图像转换为单通道灰度图像,并且图像尺寸减小为1/2cv2.IMREAD_REDUCED_COLOR_2将图像转换为3通道BGR彩色图像,并且图像尺寸减小为1/2cv2.IMREAD_REDUCED_GRAYSCALE_4将图像转换为单通道灰度图像,并且图像尺寸减小为1/4cv2.IMREAD_REDUCED_COLOR_4将图像转换为3通道BGR彩色图像,并且图像尺寸减小为1/4cv2.IMREAD_REDUCED_GRAYSCALE_8将图像转换为单通道灰度图像,并且图像尺寸减小为1/8cv2.IMREAD_REDUCED_COLOR_8将图像转换为3通道BGR彩色图像,并且图像尺寸减小为1/8cv2.IMREAD_IGNORE_ORIENTATION不根据EXIF方向标志旋转图像图像读取与显示当读取一张图片后,读取的结果是返回图像的像素数组,想要展示读取的图片时需要使用OpenCV库中函数cv2.imshow()显示图像。cv2.imshow(name,img)值描述name显示图像的窗口名字img是即将要显示的图像(imread读入的图像),窗口大小自动调整为图片大小cv2.waitKey(0):是一个和键盘绑定的函数,函数的作用是等待一个键盘的输入(因为创建的图片窗口如果没有这个函数的话会闪一下就消失了,所以如果需要让它持久输出,可以使用该函数)图像读取与显示使用OpenCV库中的读取和显示函数,将读取的图片进行展示。importcv2path=r'D:\1.jpg'img=cv2.imread(path,1)dWindow('image',cv2.WINDOW_NORMAL)cv2.imshow('image',img)cv2.waitKey(0)总结0102图像处理简介03图像读取格式标志图像读取与显示图像窗口CONTENTS目录02图像窗口创建图像窗口关闭01图像窗口创建在调用imshow()函数的时候,如果没有在此之前创建同名的窗口,就会以WINDOW_AUTOSIZE标志创建一个窗口,显示图像的原始大小;当我们需要使图像窗口拥有一些特殊的属性时,就需要使用图像创建窗口。dWindow(winname[,flag])说明:winname:窗口名称,用作窗口的标识符。flags:窗口属性设置标志。图像窗口创建标志简记作用cv.WINDOW_NORMAL0x00000000显示图像后,可随意调整窗口大小cv.WINDOW_AUTOSIZE0x00000001根据图像大小显示窗口,不可调整cv.WINDOW_OPENGL0x00001000创建窗口时支持OpenGLcv.WINDOW_FULLSCREEN1全屏显示窗口cv.WINDOW_FREERATIO0x00000100调整图像尺寸以充满窗口cv.WINDOW_KEEPRATIO0x00000000保持图像的比例cv.WINDOW_GUI_EXPANDED0x00000000允许添加工具栏和状态栏cv.WINDOW_GUI_NORMAL0x00000010不允许添加工具栏和状态栏图像窗口关闭与显示窗口功能相对应,OpenCV提供了两个关闭窗口资源的函数。#关闭指定名称的窗口None=cv.destroyWindow(winname)#关闭全部窗口None=cv.destroyAllWindows()在程序退出时会自动关闭应用程序中所有的资源和窗口,及时不主动释放窗口,也会在程序结束时释放窗口资源。因此,在一个简单的程序里,我们并不需要调用这些函数。总结0102图像窗口创建图像窗口关闭图片保存CONTENTS目录02图片保存图片保存类型01图片保存在图像处理过程中会生成新的图像(比如将模糊的图像经过算法处理后变得更加清晰,将彩色图像变成灰度图像等),需要将处理之后的结果以图像的格式保存成文件。OpenCV提供了cv.imwrite()函数用于将ndarray数组保存为图像。

cv.imwrite(filename,img[,params])说明:filename:保存图像的路径和文件名,包含图像格式。

img:将要保存的Array类型的数组。

params:保存图片格式时的属性设置标志。图片保存类型数据类型为uint16的图像可以保存成PNG、JPEG、TIFF格式文件。数据类型为float32的图像可以保存成PFM、TIFF、OpenEXR和RadianceHDR格式文件。四通道(最后一个为alpha通道)的图像可以保存成PNG格式文件。其中,对于完全透明的像素,设置alpha为0;对于完全不透明的像素,设置alpha为255/65535。321图片保存#将img以等级为90的图像质量保存cv.imwrite(filename,img,[int(cv.IMWRITE_JPEG_QUALITY),90])标志简记作用cv.IMWRITE_JPEG_QUALITY1保存成JPEG格式的文件的图像质量,范围为0~100,默认值为95cv.IMWRITE_JPEG_PROGRESSIZE2表示是否启用增强JPEG格式,1表示启用,默认值为0cv.IMWRITE_JPEG_OPTIMIZE3表示是否对JPEG格式进行优化,1表示启用,默认值为0cv.IMWRITE_JPEG_LUMA_QUALITY5JPEG单独的亮度质量等级,取值范围为0~100,默认值为0cv.IMWRITE_JPEG_CHROMA_QUALITY6JPEG单独的色度质量等级,取值范围为0~100,默认值为0cv.IMWRITE_PNG_COMPRESSION16保存成PNG文件的压缩级别,范围为0~9,值越高意味着尺寸越小,压缩时间越长,默认值为1cv.IMWRITE_TIFF_COMPRESSION256保存成TIFF文件时的压缩方案总结0102图片保存图片保存类型像素操作CONTENTS目录02像素概述像素操作01像素概述像素是构成数字图像的基本单位。当放大图像时发现许多个小方块组成的,通常把一个小方块称作一个像素。其实每个像素的面积大小由生产工艺决定,工艺越高,每个像素面积越小,每平方英寸屏幕上就能容纳更多的像素,dpi值就越高,图像就越精细,像素小到人眼分辨不出的地步了,图像看起来就跟实际的没有分别了。像素概述图片是由许多像素组成,按照水平方向和垂直方向上进行建立向下的坐标系,通过坐标(x,y)的点位置确定像素的位置。像素操作计算机利用色彩空间对颜色编码。也就是说色彩空间是计算机对颜色进行编码的模型。以较为常用的RGB色彩空间为例,在RGB色彩空间中,存在3个通道,即R通道、G通道和B通道。其中,R通道指的是红色(Red)通道;G通道指的是绿色(Green)通道;B通道指的是蓝色(Blue)通道;并且每个色彩通道都在区间[0,255]内进行取值。OpenCV获取图像(x,y)处的像素值:px=img[x,y]像素操作importcv2img=cv2.imread("1.png")i=img[100,100](b,g,r)=iprint(i,b,g,r)forxinrange(0,101):#从(100,100)到(200,100)画一条竖直的蓝线img[100+x,100]=(250,0,0)#指定点修改像素值cv2.imshow("newwindow",img)cv2.waitKey(0)总结0102像素概述像素操作谢谢您的耐心聆听specialreportandworksummary《计算机视觉处理项目实战》✩精品课件合集✩精品课件合集第X章XXXX模块3色彩空间色彩空间与转换CONTENTS目录02色彩空间色彩空间类型转换01色彩空间色彩空间(模型)是描述使用一组值(通常使用三个、四个值或者颜色成分)表示颜色方法的抽象数学模型。BGR色彩空间(B通道,G通道,R通道)RGB色彩空间(R通道,G通道,B通道)GRAY色彩空间(灰度通道值,灰度通道值,灰度通道值)HSV色彩空间(色调H,饱和度S,亮度V)色彩空间类型转换OpenCV的色彩空间类型转换只是将色彩空间参数进行调整。例如:将BGR色彩空间(B=255,G=0,R=0)调整为RGB色彩空间后得到的结果为RGB(R=255,G=0,B=0)。色彩空间的转换函数cv2.cvtColor(),语法格式如下:rst=cv2.cvtColor(img,flag)img:读取图片的路径。flag:色彩空间转换标识符。常用的标识符包括:cv2.COLOR_BGR2RGB表示从BGR转换为RGB、cv2.COLOR_BGR2GRAY表示从BGR转换为GRAY、cv2.COLOR_BGR2HSV表示从BGR转换为HSV。色彩空间类型转换示例#色彩空间转换importcv2ascvdefcolor_space_demo(img):gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)#RGB转换为GRAY这里的GRAY是单通道的cv.imshow(gray,gray)hsv=cv.cvtColor(img,cv.COLOR_BGR2HSV)#RGB转换为HSVcv.imshow(hsv,hsv)yuv=cv.cvtColor(img,cv.COLOR_RGB2YUV)#RGB转换为YUV总结0102色彩空间色彩空间类型转换通道的分离与合并CONTENTS目录0302颜色通道的分离多通道图像混合01筛选特定颜色颜色通道的分离将BGR色彩空间包含蓝(B)、绿(G)、红(R)三个通道单独提取出来,需要使用什么方法呢?OpenCV提供了cv2.split()函数来实现彩色通道的分离,语法格式如下:B,G,R=cv2.split(image)此函数分别返回蓝、绿、红色通道。image:读取的图像代码示例:B,G,R=cv2.spilt(img)多通道图像混合和颜色通道的分离相反,OpenCV提供了cv2.merge()来实现多通道的合并,语法格式如下:image=cv2.merge([B,G,R])B:蓝色通道。G:绿色通道。R:红色通道。代码示例:img=cv2.merge([B,G,R])筛选特定颜色筛选特定颜色,通常可以使用两种方法:分离颜色通道以及掩模按位与运算。在BGR色彩空间中,使用B,G,R=cv2.split(image)分离颜色通道后即可完成筛选特定颜色。在HSV色彩空间中,通过构造与原始图片相同尺寸的掩模后,再将得到掩模与原始图片进行按位与运算从而达到筛选特定颜色的目的。筛选特定颜色筛选特定颜色可以使用掩模按位与运算,OpenCV提供了cv2.inRange()函数构造与原始图片相同尺寸的掩模,语法格式如下:mask=cv2.inRange(src,lowerb,upperb)src:读取图片的路径。lowerb:筛选的通道最小值。upperb:筛选的通道最大值。代码示例:pic=cv2.inRange(img,min,max)总结0102颜色通道的分离03筛选特定颜色多通道图像混合alpha通道CONTENTS目录alpha通道01alpha通道alpha通道是计算机图形学中的术语,指的是特别的通道,意思是“非彩色”通道,主要是用来保存选区和编辑选区。通道作为图像的组成部分,是与图像的格式密不可分的,图像颜色,格式的不同决定了通道的数量和模式,在通道面板中可以直观的看到。alpha通道Alpha通道是为保存选择区域而专门设计的通道。在计算机图形学中,一个RGB颜色模型的真彩图形,用由红、绿、蓝三个色彩信息通道合成的,每个通道用了8位色彩深度,共计24位,包含了所有彩色信息。Alpha通道使用8位二进制数,就可以表示256级灰度,即256级的透明度。白色(值为255)的Alpha像素用以定义不透明的彩色像素,而黑色(值为0)的Alpha通道像素用以定义透明像素,介于黑白之间的灰度(值为30-255)的Alpha像素用以定义不同程度的半透明像素。alpha通道importcv2importnumpyasnpimg=cv2.imread("/home/miao/dog.jpg")bgra=cv2.cvtColor(img,cv2.COLOR_BGR2BGRA)b,g,r,a=cv2.split(bgra)a[:,:]=125bgra125=cv2.merge([b,g,r,a])a[:,:]=0bgra0=cv2.merge([b,g,r,a])cv2.imshow("img",img)cv2.imshow("bgra",bgra)cv2.imshow("bgra125",bgra125)cv2.waitKey()cv2.destroyAllWindows()cv2.imwrite("/home/miao/bgra.png",bgra)cv2.imwrite("/home/miao/bgra125.png",bgra125)总结01alpha通道谢谢您的耐心聆听specialreportandworksummary《计算机视觉处理项目实战》✩精品课件合集✩精品课件合集第X章XXXX模块4图像直方图图像直方图绘制CONTENTS目录0102直方图基础绘制直方图直方图基础直方图,又称质量分布图,是一种统计报告图。一般用横轴表示数据类型,纵轴表示分布情况。由一系列高度不等的纵向条纹或线段表示数据分布的情况。直方图是数值数据分布的精确图形。直方图基础从统计学的角度来看,直方图用于统计图像内各个灰度级出现的次数。直方图的横坐标表示图像像素的灰度级,纵坐标表示像素灰度级的数量。RANGE要统计的灰度级范围。直方图中像素的灰度级范围一般为[0,255],0表示黑色,255表示白色。BINS灰度级的分组数量。在处理直方图时,将灰度级按一定范围进行划分得到的子集数量为BINS。DIMS绘制直方图时采集的参数数量。一般的直方图只采集灰度级,所以DIMS为1。绘制直方图OpenCV提供了img=img.ravel()函数来实现图片的降维,语法格式如下:r_img=img.ravel()img:通过cv2.imread()读取的图片对象。返回值:图片一维数据源。代码实例:r_clothes=clothes.ravel()绘制直方图参数说明如下:src为用于绘制直方图的图像数据,必须是一维数组。通常,OpenCV中的BGR图像是三维数组,可用ravel()函数将其转换为一维数组。bins为灰度级分组数量。matplotlib.pyplot.hist()函数可根据图像绘制直方图,其基本格式如下。matplotlib.pyplot.hist(src,bins)绘制直方图示例importcv2importmatplotlib.pyplotaspltclothes=cv2.imread(r"D:\Others\Docs\picture\clothes.jpg")r_clothes=clothes.ravel()plt.hist(r_clothes,256)plt.show()总结0102直方图基础绘制直方图二维直方图CONTENTS目录0102OpenCV中的二维直方图NumPy中的二维直方图OpenCV中的二维直方图OpenCV使用cv2.calcHist()函数来查找颜色直方图,在使用过程中需要注意:image参数指定的原图应从BGR色彩空间转换为HSV色彩空间,实际参数需用方括号括起来。histSize参数设置BINS值为[180,256]时,表示色相为180,饱和度为256。channels参数设置为[0,1]时,表示同时处理色相和饱和度。ranges参数设置为[0,180,0,256]时,表示色相值的取值范围为[0,180],饱和度的取值范围为[0,256]。OpenCV中的二维直方图示例importcv2img=cv2.imread('building.jpg')cv2.imshow('original',img) img2=cv2.cvtColor(img,cv2.COLOR_BGR2HSV) hist=cv2.calcHist([img2],[0,1],None,[180,256],[0,180,0,256])cv2.imshow('2Dhist',hist) cv2.waitKey(0)

OpenCV中的二维直方图cv2.calcHist()函数返回的颜色直方图是一个大小为180×256的二维数组,用cv2.imshow()函数显示时是一幅灰度图像,不能直接显示出颜色的分布情况。可以使用matplotlib.pyplot.imshow()函数绘制具有不同颜色的二维直方图。importmatplotlib.pyplotaspltplt.imshow(hist,interpolation='nearest')plt.show() 示例NumPy中的二维直方图NumPy的histogram2D()函数用于计算二维直方图,其基本格式如下。hist,xedges,yedges=np.histogram2D(x,y,bins,range)参数说明如下:hist为返回的直方图。xedges为返回的x的直方图的BINS边界值。yedges为返回的y的直方图的BINS边界值。x和y为原图对应通道转换成的一维数组。bins为BINS的值,如[180,256]。range为像素值范围,格式为“[[0,180],[0,256]]”。NumPy中的二维直方图示例#channels代表统计的色彩通道channels=[0]blue_hist=cv2.calcHist([clothes],channels,mask,histSize,ranges)plt.plot(blue_hist,'b')channels=[1]green_hist=cv2.calcHist([clothes],channels,mask,histSize,ranges)plt.plot(green_hist,'g')channels=[2]red_hist=cv2.calcHist([clothes],channels,mask,histSize,ranges)plt.plot(red_hist,'r')plt.show()总结0102OpenCV中的二维直方图NumPy中的二维直方图直方图均衡化CONTENTS目录0102直方图均衡化概述普通直方图均衡化03限制对比度自适应直方图均衡化直方图均衡化概述直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。通常用来增加许多图像的全局对比度,尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布直方图均衡化使图像外观更清晰、色彩更加均衡。它被广泛地应用在人脸识别、车牌识别等领域。1234普通直方图均衡化普通直方图均衡化主要是指将原图像的灰度级均匀地映射到全部灰度级范围内。OpenCV的cv2.equalizeHist(src)函数用于实现普通直方图均衡化,其基本格式如下。dst=cv2.equalizeHist(src)dst为直方图均衡化后的图像。src为原图像,必须是8位的单通道图像。参数说明如下普通直方图均衡化示例importcv2importmatplotlib.pyplotaspltimg=cv2.imread('bee.jpg',0) cv2.imshow('original',img) plt.figure('原图的直方图')plt.hist(img.ravel(),256) img2=cv2.equalizeHist(img)cv2.imshow('equalizeHist',img2) plt.figure('均衡化后的直方图')plt.hist(img2.ravel(),256) plt.show()

限制对比度自适应直方图均衡化

可对局部对比度进行限制,这就是限制对比度自适应直方图均衡化OpenCV的cv2.createCLAHE()函数用于创建CLAHE对象,其基本格式如下。retval=cv2.createCLAHE([clipLimit[,tileGridSize]])参数说明如下。retval为返回的CLAHE对象。clipLimit为对比度受限的阈值,默认值为40.0。tileGridSize为直方图均衡化的网格大小,默认值为(8,8)。

调用CLAHE对象的apply()方法,将其应用到图像中进行均衡化。限制对比度自适应直方图均衡化示例importcv2importmatplotlib.pyplotaspltimg=cv2.imread('clahe.jpg',0)cv2.imshow('original',img) img2=cv2.equalizeHist(img)cv2.imshow('equalizeHist',img2) clahe=cv2.createCLAHE(clipLimit=5) img3=clahe.apply(img)cv2.imshow('CLAHE',img3) cv2.waitKey(0)

总结0102直方图均衡化概述普通直方图均衡化03限制对比度自适应直方图均衡化图像模板匹配CONTENTS目录0102模板匹配概述模板匹配语法模板匹配概述模板匹配是一种最原始、最基本的模式识别方法它是图像处理中最基本、最常用的匹配方法模板匹配的操作方法是将模板图像在输入图像上滑动遍历所有的像素从而完成匹配操作研究某一特定对象的图案位于图像的什么地方,这就是一个匹配问题在图像A内寻找与图像B最相似的部分,一般将图像A称为输入图像,将图像B称为模板图像模板匹配具有自身的局限性,主要表现在它只能进行平行移动模板匹配语法OpenCV提供了cv2.matchTemplate()来实现图像的模板匹配,语法格式如下:result=cv2.matchTemplate(image,templ,method[,mask])image:8位或32位原始图像。templ:模板图像。method:匹配方法。mask:掩码。代码示例:rv=cv2.matchTemplate(img,template,cv2.TM_SQDIFF)模板匹配语法将模板匹配后得到的坐标值在原图中标注出来。OpenCV提供了cv2.rectangle()函数完成使用坐标值来绘画矩形,其语法格式如下:cv2.rectangle(image,pt1,pt2[[,color],thickness])image:8位或32位原始图像。pt1:图片的左上角坐标。pt2:图片的右下角坐标。color:线条颜色。thickness:线条粗细。总结0102模板匹配概述模板匹配语法谢谢您的耐心聆听specialreportandworksummary《计算机视觉处理项目实战》✩精品课件合集✩精品课件合集第X章XXXX模块5绘制图像绘制线段CONTENTS目录01绘制线段绘制线段cv2.line()函数用于绘制线段,其语法格式如下。cv2.line(img,pt1,pt2,color[,thickness[,lineType[,shift]]])参数说明如下。img为用于绘制图像的图像。pt1为直线段的起点坐标。pt2为直线段的终点坐标。color为直线段的颜色。通常使用BGR模型表示颜色,如(255,0,0)表示蓝色。thickness表示线条粗细。默认值为1,设置为-1时表示绘制填充图形。lineType表示线条类型,默认值为cv2.Line_8。线条类型可设置为下列常量。cv2.FILLED:填充。

cv2.LINE_8:8条连接线。cv2.LINE_4:4条连接线。

cv2.LINE_AA:抗锯齿线,线条更平滑。shift表示坐标的数值精度,一般情况下不需要设置。绘制线段示例:创建一个黑色的图像,在图像中绘制一条蓝色的对角线,厚度为5像素importnumpyasnpimportcv2ascvimg=np.zeros((512,512,3),np.uint8)cv.line(img,(0,0),(511,511),(255,0,0),5)cv.imshow('image',img)cv.waitKey(0)cv.destroyAllWindows()总结01绘制线段绘制矩形CONTENTS目录01绘制矩形绘制矩形

cv2.rectangle()函数用于绘制矩形,其语法格式如下。cv2.rectangle(img,pt1,pt2,color[,thickness[,lineType[,shift]]])

值描述img要画的矩形的图像pt1矩形左上角的点pt2矩形右下角的点color线条颜色,如(0,0,255)红色,BGRthickness线条粗细(默认值=1)lineType线条类型(默认值=8)shift圆心坐标点和数轴的精度(默认值=0)绘制矩形示例:创建一个黑色的图像,在图像中绘制一个水平居中和垂直居中的一个绿色矩形,厚度为5像素。importnumpyasnpimportcv2ascvimg=np.zeros((200,500,3),np.uint8)cv.rectangle(img,(100,50),(400,150),(0,255,0),5)cv.imshow('image',img)cv.waitKey(0)cv.destroyAllWindows()总结01绘制矩形绘制圆形CONTENTS目录0102绘制圆绘制椭圆绘制圆cv2.circle()函数用于绘制圆,其语法格式如下。值描述img要画的圆所在的矩形或图像center圆心坐标,如(100,100)radius半径,如10color线条颜色,如(0,0,255)红色,BGRthickness线条粗细(默认值=1)lineType线条类型(默认值=8)shift圆心坐标点和数轴的精度(默认值=0)cv2.circle(img,center,radius,color[,thickness[,lineType[,shift]]])绘制圆示例:创建一个黑色的图像,在图像中绘制一个实心的红色圆形,位置居中。importnumpyasnpimportcv2ascvimg=np.zeros((300,300,3),np.uint8)cv.circle(img,(150,150),100,(0,0,255),-1)cv.imshow('image',img)cv.waitKey(0)cv.destroyAllWindows()绘制椭圆cv2.ellipse()函数用于绘制椭圆,其语法格式如下。cv2.ellipse(img,center,axes,angle,startAngle,endAngle,color[,thickness[,lineType[,shift]]])值描述img需要绘图的图像center椭圆中心点坐标axes椭圆尺寸(即长短轴)angle旋转角度(顺时针方向)startAngle绘制的起始角度(顺时针方向)endAngle绘制的终止角度(例如,绘制整个椭圆是0,360,绘制下半椭圆就是0,180)color圆心坐标和半径的小数点位数thickness线条粗细(默认值=1)lineType线条类型(默认值=8)shift圆心坐标点和数轴的精度(默认值=0)绘制椭圆示例:创建一个黑色的图像,在图像中绘制一个空心的椭圆形,位置居中,线条颜色白色,宽度为3。importcv2importnumpyasnpimg=np.zeros((512,512,3),np.uint8)cv2.ellipse(img,(260,240),(170,130),0,0,360,(255,255,255),3)cv2.imshow("test",img)cv2.waitKey(0)cv2.destroyAllWindows()总结0102绘制圆绘制椭圆绘制多边形CONTENTS目录01绘制多边形绘制多边形cv2.polylines()函数用于绘制多边形,其语法格式如下。cv2.polylines(img,pts,isClosed,color[,thickness[,lineType[,shift]]])值描述img需要绘图的图像pts多边形曲线数组npts多边形顶点计数器的数组ncontours曲线数isClosed指示绘制的折线是否关闭的标志。如果它们是闭合的,则该函数将从每个曲线的最后一个顶点到其第一个顶点绘制一条直线。color折线的颜色thickness线条粗细(默认值=1)lineType线条类型(默认值=8)shift圆心坐标点和数轴的精度(默认值=0)绘制多边形示例:创建一个黑色的图像,在图像中绘制一个小多边形,颜色为蓝色,边宽为3。importcv2importnumpyasnpimg=np.zeros((200,200,3),np.uint8)pts=np.array([[100,50],[23,30],[150,180],[90,60]],32)pts=pts.reshape((-1,1,2))cv.polylines(img,[pts],True,(255,255,0),3)cv2.imshow("test",img)cv2.waitKey(0)cv2.destroyAllWindows()总结01绘制多边形绘制文本CONTENTS目录01绘制文本绘制文本cv2.putText()函数用于绘制文本,其语法格式如下。cv2.putText(img,text,org,fontFace,fontScale,color[,thickness[,lineType[,bottomLeftOrigin]]])值描述img需要绘图的图像text待显示的文字org文字在图像中的左下角坐标font字体结构体.fontFace字体类型fontScale字体大小,该值和字体内置大小相乘得到字体大小color文本颜色(默认颜色存储通道为BGR)thickness线条粗细(默认值=1)lineType线条类型(默认值=8)bottomLeftOrigin图像数据原点绘制文本FONT_HERSHEY_SIMPLEXFONT_HERSHEY_PLAINFONT_HERSHEY_DUPLEXFONT_HERSHEY_COMPLEXFONT_HERSHEY_TRIPLEXFONT_HERSHEY_COMPLEX_SMALLFONT_HERSHEY_SCRIPT_SIMPLEXFONT_HERSHEY_SCRIPT_COMPLEX绘制文本示例:使用OpenCV读取一张图片,在图片的中心加入“Spongebobsquarepants”,设置字体为浅蓝色。importcv2importnumpyasnpimg=cv2.imread('D:/img/test.jpg')font=cv2.FONT_HERSHEY_SCRIPT_COMPLEXtext='Spongebobsquarepants'cv2.putText(img,text,(20,100),font,2,(255,255,0),2,cv2.LINE_AA)cv2.imshow("test",img)cv2.waitKey(0)cv2.destroyAllWindows()总结01绘制文本绘制箭头CONTENTS目录01绘制箭头绘制箭头cv2.arrowedLine()函数用于绘制箭头,其语法格式如下。cv2.arrowedLine(img,pt1,pt2,color[,thickness[,lineType[,shift[,tipLength]]]])参数说明如下。img、pt1、pt2、color、thickness、lineType和shift等参数与cv2.line()函数中的含义一致。tipLength为箭尖相对于箭头长度的比例,默认值为0.1。绘制箭头示例:创建一个白色的图像,在图像中绘制红色箭头。importnumpyasnpimportcv2img=np.zeros((200,320,3),np.uint8)+255 cv2.arrowedLine(img,(50,50),(50,150),(0,0,255),2)cv2.arrowedLine(img,(50,50),(300,50),(0,0,255),2)cv2.imshow('draw',img) cv2.waitKey(0)总结01绘制箭头响应鼠标事件CONTENTS目录01响应鼠标事件响应鼠标事件OpenCV可在用户触发鼠标事件时,调用鼠标回调函数完成事件处理。鼠标回调函数的基本格式如下。defmouseCallback(event,x,y,flags,param):…参数说明如下。mouseCallback为自定义函数名称。event为调用时传递给函数的鼠标事件对象。x和y为触发鼠标事件时,鼠标指针在窗口中的坐标(x,y)。flags为触发鼠标事件时,鼠标拖动或键盘按键操作,参数可设置为下列常量。param为传递给回调函数的其他数据。响应鼠标事件flags为触发鼠标事件时,鼠标拖动或键盘按键操作,参数可设置为下列常量。参数描述cv2.EVENT_MOUSEMOVE鼠标移动cv2.EVENT_MOUSEWHEEL滚动鼠标中键(正、负值表示向前或向后滚动)cv2.EVENT_RBUTTONDBLCLK双击鼠标右键cv2.EVENT_FLAG_LBUTTON按住鼠标左键拖动cv2.EVENT_FLAG_MBUTTON按住鼠标中键拖动cv2.EVENT_FLAG_RBUTTON按住鼠标右键拖动cv2.EVENT_FLAG_SHIFTKEY按下【Shift】键cv2.EVENT_RBUTTONDOWN按下鼠标右键cv2.EVENT_RBUTTONUP释放鼠标右键cv2.EVENT_FLAG_ALTKEY按下【Alt】键cv2.EVENT_FLAG_CTRLKEY按下【Ctrl】键响应鼠标事件cv2.setMouseCallback()用于为图像窗口绑定鼠标回调函数,其基本格式如下。cv2.setMouseCallback(wname,mouseCallback)参数说明如下。wname为图像窗口的名称。mouseCallback为鼠标回调函数名称。响应鼠标事件示例importnumpyasnpimportcv2img=np.zeros((200,320,3),np.uint8)+255defdraw(event,x,y,flag,param): ifevent==cv2.EVENT_LBUTTONDBLCLK:cv2.circle(img,(x,y),20,(255,0,0),-1) elifevent==cv2.EVENT_RBUTTONDBLCLK:cv2.rectangle(img,(x,y),(x+20,y+20),(0,0,255),-1)

dWindow('drawing')cv2.setMouseCallback('drawing',draw)while(True):cv2.imshow('drawing',img) k=cv2.waitKey(1)ifk==27: breakcv2.destroyAllWindows()总结01响应鼠标事件使用跟踪栏CONTENTS目录01使用跟踪栏使用跟踪栏跟踪栏(Trackbar)是OpenCV为图像窗口提供的交互工具。用户可以通过跟踪栏中的滑块位置获取特定范围内的值。cv2.createTrackbar()函数用于创建跟踪栏,其基本格式如下。cv2.createTrackbar(trackbarname,wname,value,count,onChange,userdata)参数说明如下。trackbarname为跟踪栏的名称。wname为图像窗口的名称。value为跟踪栏中滑块的初始位置。count为跟踪栏的最大值,最小值为0。onChange为跟踪栏滑块位置变化时调用的回调函数名称。userdata为传递给回调函数的其他可选数据。使用跟踪栏cv2.getTrackbarPos()函数用于返回跟踪栏的当前值,其基本格式如下。retval=cv2.getTrackbarPos(trackbarname,wname)参数说明如下。trackbarname为跟踪栏的名称。wname为图像窗口的名称。使用跟踪栏示例:创建一个黑色的图像,创建跟踪栏。importnumpyasnpimportcv2img=np.zeros((120,400,3),np.uint8) defdoChange(x):b=cv2.getTrackbarPos('B','tracebar')g=cv2.getTrackbarPos('G','tracebar')r=cv2.getTrackbarPos('R','tracebar')img[:]=[b,g,r] dWindow('tracebar')cv2.createTrackbar('B','trackbar',0,255,doChange) cv2.createTrackbar('G','trackbar',0,255,doChange)cv2.createTrackbar('R','trackbar',0,255,doChange)while(True):cv2.imshow('trackbar',img) k=cv2.waitKey(1)ifk==27: breakcv2.destroyAllWindows()总结01使用跟踪栏谢谢您的耐心聆听specialreportandworksummary《计算机视觉处理项目实战》✩精品课件合集✩精品课件合集第X章XXXX模块6图像的几何变换RGB色彩空间CONTENTS目录0102RGB色彩空间GRAY色彩空间03HSV色彩空间RGB色彩空间RGB色彩空间中,图像的每个像素用一个三元组表示,三元组中的3个值依次表示红色、绿色和蓝色,依次对应R、G和B通道。在cv2.cvtColor()函数中使用cv2.COLOR_BGR2RGB转换码可将图像从BGR色彩空间转换为RGB色彩空间OpenCV默认采用BGR色彩空间,它按B、G和R通道顺序表示图像。RGB色彩空间使用R(Red,红)、G(Green,绿)和B(Blue,蓝)3种基本颜色表示图像像素。GRAY色彩空间GRAY色彩空间通常指8位灰度图像,其颜色取值范围为[0,255],共256个灰度级。从RGB色彩空间转换为GRAY色彩空间的计算公式如下。Gray=0.299R+0.587G+0.114B在cv2.cvtColor()函数使用cv2.COLOR_BGR2GRAY转换码可将图像从BGR色彩空间转换为GRAY色彩空间231HSV色彩空间HSV色彩空间使用色调(Hue,也称色相)、饱和度(Saturation)和亮度(Value)表示图像。色调H表示颜色,用角度表示,取值范围为[0°,360°],从红色开始按逆时针方向计算。例如,红色为0°、黄色为60°、绿色为120°、青色为180°、蓝色为240°、紫色为300°等。饱和度S表示颜色接近光谱色的程度,或者表示光谱色中混入白光的比例。光谱色中白光的比例越低,饱和度越高,颜色越深、艳。光谱色中白光比例为0时,饱和度达到最高。饱和度的取值范围为[0,1]。亮度V表示颜色明亮的程度,是人眼可感受到的明暗程度,其取值范围为[0,1]。总结0102RGB色彩空间GRAY色彩空间02HSV色彩空间图像翻转变换CONTENTS目录01图像的翻转图像的翻转在OpenCV中,采用函数cv2.flip()实现图像的翻转,可以实现在水平方向,垂直方向或两个方向同时的翻转,其语法结构为:cv2.flip(src,flipCode[,dst])src代表要处理的原始图像;dst代表和原始图像具有同样大小,类型的目标图像;flipCode代表旋转类型,flipCode取值的说明如下表所示。参数值说明意义0只能是0绕着x轴翻转正数1、2、3等任意正数绕着y轴翻转负数-1、-2、-3等任意负数围绕x轴、y轴同时翻转图像的翻转示例:使用flip()函数对图片进行水平翻转、垂直翻转以及水平垂直翻转等操作。importcv2path=r'D:/img/5.jpg'src=cv2.imread(path)window_name='Image'image=cv2.flip(src,1)image1=cv2.flip(src,0)image2=cv2.flip(src,-1)cv2.imshow("originalimage",src)cv2.imshow(window_name,image)cv2.imshow(window_name+"1",image1)cv2.imshow(window_name+"2",image2)cv2.waitKey(0)总结01图像的翻转图像仿射变换CONTENTS目录0102图像的仿射图像平移仿射03图像旋转仿射图像的仿射仿射变换是指图像可以通过一系列的几何变换来实现平移,旋转等多种操作。该变换能够保持图像的平直性和平行性。平直性是指图像经过仿射变换后,直线仍然是直线;平行线是指图像完成仿射变换后,平行线仍然是平行线。实现的方式是通过一个2×3的变换矩阵(映射矩阵)M实现仿射变换,具体为:dst(x,y)=src(M11x+M12y+M13,M21x+M22y+M23)src图像平移仿射采用仿射函数cv2.warpAffine()实现对图像的仿射变换,该函数的语法格式如下:dst=cv2.warpAffine(src,M,dsize[,flags[,borderMode[,borderValue]]])dst代表仿射后的输出图像,该图像的类型和原始图像的类型相同。src代表要仿射的原始图像。M代表一个2×3的变换矩阵。使用不同的变换矩阵,就可以实现不同的仿射变换。dsize代表输出图像的尺寸大小。flags代表插值方法,默认为INTER_LINEAR。当该值为WARP_INVERSEMAP时,意味着M是逆变换类型,实现从目标图像dst到原始图像src的逆变换。borderMode代表边类型,默认为BORDER_CONSTANT。当该值为BORDER_TRANSPARENT时,意味着目标图像内的值不做改变,这些值对应原始图像内的异常值。borderValue代表边界值,默认是0。图像平移仿射示例:通过warpAffine()函数将图向右平移50像素,向下平移50像素。importcv2importnumpyasnpimg=cv2.imread('D:/img/4.jpg')height,width,channel=img.shapeM=np.float32([[1,0,10],[0,1,30]])shifted=cv2.warpAffine(img,M,(width,height))cv2.imwrite('test.png',shifted)图像旋转仿射

在OpenCV库中对图片进行旋转操作时,可以通过使用getRotationMatrix2D()函数与wrapAffine()函数两个函数完成图像的旋转。

getRotationMatrix2D(center,angle,scale)值描述center旋转中心点(cx,cy)你可以随意指定angle旋转的角度单位是角度逆时针方向为正方向,角度为正值代表逆时针scale缩放倍数.值等于1.0代表尺寸不变图像旋转仿射示例:编写一个图像旋转的案例,将图进行旋转操作,以中心为原点,分别是逆时针旋转30°,逆时针旋转45°,逆时针旋转60°。img=cv2.imread('D:/img/1.png')height,width,channel=img.shapecx=int(width/2)cy=int(height/2)center=(cx,cy)new_dim=(width,height)M=cv2.getRotationMatrix2D(center=center,angle=30,scale=1.0)rotated_30=cv2.warpAffine(img,M,new_dim)#展示原图像plt.subplot(221)plt.imshow(img[:,:,::-1])#逆时针旋转30°plt.subplot(222)plt.imshow(rotated_30[:,:,::-1])plt.show()总结0102图像的仿射图像平移仿射02图像旋转仿射图像均值滤波CONTENTS目录01均值滤波均值滤波均值滤波是指以当前点为中心,用其周围N×N个点像素值的平均值来替代当前点的像素值。用于计算平均值的N×N个点称为邻域,用于滤波计算的卷积核大小与邻域相同。例如,一个大小为3×3的邻域如图所示。

则卷积核为

。中心点的均值滤波值143,143比253更接近周围的值。均值滤波OpenCV的cv2.blur()函数用于实现均值滤波,其基本格式如下。dst=cv2.blur(src,ksize[,anchor[,borderType]])参数说明如下。dst为滤波结果图像。src为原图像。ksize为卷积核大小,表示为(width,height),width和height通常设置为相同值,且为正数和奇数。均值滤波示例importcv2img=cv2.imread('lena2.jpg')cv2.imshow('img',img)img2=cv2.blur(img,(20,20))cv2.imshow('imgBlur',img2)cv2.waitKey(0)总结01均值滤波图像的重映射CONTENTS目录01图像的重映射图像的重映射重映射,就是把一副图像中某个位置的像素放置到另一个图片指定位置的过程。为了完成映射过程,需要获取一些插值为非整数像素的坐标,因为原图像与目标图像的像素坐标不是一一对应的。一般情况下,我们通过重映射来表达每个像素的位置(x,y)像这样:OpenCV内的重映射函数cv2.remap()提供了更方便、更自由的映射方式,其语法格式如下:dst=cv2.remap(src,map1,map2,interpolation[,borderMode[,borderValue]])dst代表目标图像,它和src具有相同的大小和类型。src代表原始图像。图像的重映射map1参数它可能有两种可能的表示对象:表示点(x,y)的第一个映射。表示CV_16SC2,CV_32FC1或CV_3

温馨提示

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

评论

0/150

提交评论