版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数字图像处理一、OpenCV安装教程DIRECTORY目录二、OpenCV简单使用三、Matplotlib库简单使用四、Numpy库简单使用一、OpenCV安装教程2.1opencv及常用库的安装教程在完成PyCharm的初始化配置后,接下来配置OpenCV和一些常用库。首先,单机操作界面左上角的“File”,之后单机“setting”,会出现如下的配置界面。2.1opencv及常用库的安装教程在完成opencv库的安装后,可以使用相同的方法完成Numpy库的安装。同样,也可以使用相同的方法完成matplotlib库的安装。。二、OpenCV简单使用2.1opencv图像基础在学习处理图像的操作之前,首先要了解图像的表示方法。图像是由像素构成的,同等面积下,像素越多则图像越清晰。图像主要分为三类:二值图像:图像只有
黑、白
两种颜色(像素点
0或1)灰度图像:图像只有
黑、白、灰
三种颜色(像素点
0-255,其中
0
为黑色,255
为白色,1-254
之间均为灰色)RGB图像:彩色图像其中,二值和灰度图像
均为
单通道,RGB图像
为
三通道。、彩色图像(RGB):由
红、绿、蓝
三色按照某种比例混合而成的。彩色图像(BGR):opencv库专用,顺序为蓝、绿、红。2.2opencv图像的加载显示和保存1、return=cv2.imread(filename,
flags):读取加载图片,return是返回值,其值是读取到的图像filename是要读取图像的完整文件名flags是读取标记用于控制读取文件的类型2、cv2.imshow(winname,image):显示图片winname是窗口的名称image是要显示的图像3、cv2.waitKey(delay):等待图片的关闭delay表示等待键盘触发时间,单位是ms。当该值为负数或0时表示无限等待,默认值为0.cv2.imwrite(filename,img):保存图片filename是要保持图片的完整路径img是要保存图像的名字2.3图像显示窗口创建与销毁1、dWindow(winname):创建一个窗口。winname指窗口的名字2、cv2.destroyWindow(winname):销毁某个窗口。winname指窗口的名字3、cv2.destroyAllWindows():销毁所有窗口
2.4图像常用属性的获取img.shape:打印图片的高、宽和通道数(当图片为灰度图像时,颜色通道数为1,不显示)img.size:打印图片的像素数目img.dtype:打印图片的格式2.4图像常用属性的获取img.shape:打印图片的高、宽和通道数(当图片为灰度图像时,颜色通道数为1,不显示)img.size:打印图片的像素数目img.dtype:打印图片的格式运行结果:2.5生产指定大小的矩形区域1、一个图片img,它的某个像素点可以用img[x,y,c]表示(x,y为坐标,c为通道数)2、同理,这个图片的某个矩形区域可以表示为:img[x1:x2,y1:y2,c](相当于截下一块矩形,左上角坐标为(x1,y1),右下角坐标为(x2,y2))3、其中c一般取值为0,1,2(BGR)代表第几个颜色通道,可以省略不写img[x,y]代表所有通道。实例1、生成一个大小为(200,300)颜色通道为3的红色图片
实例2、从一张图片上截取一个矩形区域2.6图片颜色通道的分离与合并在图像处理过程中,有时会根据需要对通道进行拆分与合并。OpenCV中提供了split()和merge()函数对图像进行拆分与合并。cv2.split(m):将图片m分离为三个颜色通道2.6图片颜色通道的分离与合并在图像处理过程中,有时会根据需要对通道进行拆分与合并。OpenCV中提供了split()和merge()函数对图像进行拆分与合并。cv2.split(m):将图片m分离为三个颜色通道cv2.merge(mv):将三个颜色通道合并为一张图片mv是需要合并的通道的图像信息cv2.merge(mv):将三个颜色通道合并为一张图片mv是需要合并的通道的图像信息三、Matplotlib库简单使用matplotlib库函数基本用法(绘图)Matplotlib库是python优秀的数据可视化第三方库,有超过100种数据可视化显示效果。只需几行代码就可以生成图表,直方图,功率谱,条形图,误差图,散点图等。Matplotlib由各种可视化类构成Matplotlib.pyplot是绘制各类可视化图形的命令子库,相当于快捷方式
(用户可以仅通过调用pyplot就可以使用Matplotlib中所有可视化的类)引用:importmatplotlib.pyplotasplt,简写为plt已成为一个不成文的规定matplotlib库函数基本用法(绘图)3.1plt.figure()用来画图,能自定义画布大小figure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None,frameon=True)num:图像编号或名称,数字为编号
,字符串为名称figsize:指定figure的宽和高,单位为英寸;dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为801英寸等于2.5cm,A4纸是21*30cm的纸张facecolor:背景颜色edgecolor:边框颜色frameon:是否显示边框实例3.2plt.plot(x,y,format_string,**kwargs)x:x轴数据,列表或数组,可选y:y轴数据,列表或数组format_string:控制曲线的格式字符串,可选**kwargs:第二组或更多,(x,y,format_string)3.3plt.subplot()plt.subplot()函数用于直接指定划分方式和位置进行绘图。#使用plt.subplot来创建小图.plt.subplot(221)表示将整个图像窗口分为2行2列,当前位置为1.plt.subplot(221)#plt.subplot(222)表示将整个图像窗口分为2行2列,当前位置为2.plt.subplot(222)#第一行的右图#plt.subplot(223)表示将整个图像窗口分为2行2列,当前位置为3.plt.subplot(223)#plt.subplot(224)表示将整个图像窗口分为2行2列,当前位置为4.plt.subplot(224)3.4plt.imshow()Matplotlib中的imshow函数用于绘制热图。(热图:时数据分析常用的方法。通过色差、亮度来展示数据的差异,容易理解)imshow(X,cmap=None,norm=None,aspect=None,interpolation=None,alpha=None,vmin=None,vmax=None,origin=None,extent=None,shape=None,filternorm=1,filterrad=4.0,imlim=None,resample=None,url=None,hold=None,data=None,**kwargs)主要参数:1.X:array_like对象/数列类对象,shape(n,m)X可以是数列类格式、或者PIL图片。2.cmap:cmap是colormap的简称,用于指定渐变色,默认的值为viridis。3.aspect:aspect用于指定热图的单元格的大小,默认值为equal,此时单元格用于是一个方块,当设置为auto时,会根据画布的大小动态调整单元格的大小。4.alpha:alpha参数用于指定透明度。5.orign:orign参数指定绘制热图时的方向,默认值为upper此时热图的右上角为(0,0),当设置为lower时,热图的左下角为(0,0)。6.vmin和vmax:用于限定数值的范围,只将vmin和vmax之间的值进行映射。7.interpolation:参数控制热图的显示形式。8.extent:extent参数指定热图x轴和y轴的极值。3.5plt.show()在使用matplotlib库的过程中,仅仅使用plt.imshow()函数无法将图片显示出来,必须在后面添加plt.show()函数才能完成图片的显示。原理:plt.imshow()函数负责对图像进行处理,并显示其格式,而plt.show()则是将plt.imshow()处理后的函数显示出来。3.6绘制折线图3.7绘制直方图直方图概述:从统计的角度讲,直方图是图像内灰度值的统计特性与图像灰度值之间的函数,直方图统计图像内各个灰度级出现的次数。其表示方法为:第一,确定图像像元的灰度值范围;第二,以适当的灰度间隔为单位将其划分为若干等级;第三,以横轴表示灰度级,以纵轴表示每一灰度级具有的像元数或该像元数占总像元数的比例值,做出的条形统计图就是灰度直方图。直方图的绘制:OpenCV中提供了cv2.calcHist()函数用于计算统计直方图,可使用matplotlib库中的plot()函数绘制直方图。hist=cv2.calcHist(image,channel,mask,histSize,range,accumulate)主要参数:hist表示返回的统计直方图,数组内是各个灰度级的像素个数。image表示原始图像,该图像需要用“[]”括起来。channel
表示指定通道编号。通道编号需要用“[]”
括起来。mask表示掩模图像。当统计整幅图像的直方图时,将这个值设为None.当统计图
像某一部分的直方图时,需要用到掩模图像。histSize表示BINS的值,该值需要用“[]”括起来。range表示像素值范围。accumulate表示累计标识,默认值为False如果被设置为True,则直方图在开始计算时不会被清零,计算的是多个直方图的累积结果,用于对一组图像计算直方图。该参数是可选择的,一般情况下不需要设置。可见,输出的hist为一维数组。使用calchHist()函数计算图像的统计直方图。使用plot()函数绘制灰度直方图。使用pyplot.hist()函数绘制灰度直方图matplotlib.pyplot.hist(image,BINS)BINS表示灰度级的分组情况Image表示原始图像数据,必须将其转换为一维数组。四、Numpy简单使用Numpy库的简单介绍NumPy是Python语言的一个第三方库,其支持大量高维度数组与矩阵运算。此外,NumPy也针对数组运算提供大量的数学函数。机器学习涉及到大量对数组的变换和运算,NumPy就成了必不可少的工具之一。Numpy库的功能:ndarray,一个多维数组结构,高效且节省空间无需循环,对整组数据进行快速运算的数学函数读写磁盘数据的工具以及用于操作内存映射文件的工具线性代数、随机数生成和傅里叶变换功能用于集成C、C++等代码的工具使用numpy创建一维数组numpy.array(object,
dtype=None,
copy=True,
order='K',
subok=False,
ndmin=0)object:数组公开数组接口的任何对象,返回数组的对象,或任何(嵌套)序列。dtype:数据类型,可选使用numpy创建二维数组使用numpy创建全为0的二维数组np.zeros(shape,dtype=None,older=‘C’)shape是一个int或一个int元组,用于定义数组的大小。如果我们仅指定一个int变量,则将返回一维数组。对于一个整数元组,将返回给定形状的数组。dtype是一个可选参数,默认值为float。它用于指定数组的数据类型,例如int
older:C表示行优先,F表示列优先(可选参数)使用numpy创建全为1的二维数组numpy.ones(shape,dtype=None,order=‘C’)参数:shape是一个int或一个int元组,用于定义数组的大小。如果我们仅指定一个int变量,则将返回一维数组。对于一个整数元组,将返回给定形状的数组。dtype是一个可选参数,默认值为float。它用于指定数组的数据类型,例如intolder:C表示行优先,F表示列优先(可选参数)使用numpy创建任意大小的数组并填充任意数字numpy.full(shape,
fill_value,
dtype=None,
order='C')返回一个根据指定shape和type,并用fill_value填充的新数组。参数:shape:整数或整数序列新数组的形态,单个值代表一维,参数传元组,元组中元素个数就代表是几维,例如,
(2,
3)
or
2.fill_value:
标量(无向量)填充数组的值dtype:数据类型,可选默认值为None查看要填充数组的值数据类型:np.array(fill_value).dtype。order:{‘C’,‘F’},可选是否在内存中以行为主(C风格)或列为主(Fortran风格)连续(行或列)顺序存储多维数据。使用numpy创建任意大小的数组并填充任意数字使用numpy创建一维等差数组numpy.arange(start,stop,step,dtype=None)参数:start:开始位置,数字,可选项,默认起始值为0stop:停止位置,数字step:步长,数字,可选项,默认步长为1,如果指定了step,则还必须给出start。dtype:输出数组的类型。如果未给出dtype,则从其他输入参数推断数据类型。返回:均匀间隔值的数组。使用numpy创建一维等差数组使用numpy创建二维等差数组numpy.reshape(a,newshape,order=‘C’)参数:a:array_like要重塑的数组。newshape:int或int的元组新形状应与原始形状兼容。如果是整数,则结果将是该长度的一维数组。order:{'C','F','A'},可选使用此索引顺序读取a的元素,然后使用此索
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 影视制作定向合作协议
- 农业项目草场租赁合同
- 仓储物流中心建设模板
- 生态扶贫与保护政策与措施
- 商业综合体建造师聘用合同模板
- 燃气管道改造施工协议
- 质量保证协议书烟草分销商
- 大型码头码头地面压路机施工合同
- 糕点面包厂管理
- 孕期妊娠期糖尿病
- 国家开放大学《可编程控制器应用实训》形考任务6参考答案
- 2024陆上风电场工程可行性研究报告编制规程
- 国家开放大学本科《纳税筹划》在线形考(形考任务三)试题及答案
- 交通工程中的人因工程与智能化
- 内分泌科疾病护理常规内分泌系统疾病护理常规
- 民航服务心理案例分析
- (高清版)JTGT 3371-01-2022 公路沉管隧道设计规范
- 【110kv水电站电气一次部分设计17000字(论文)】
- 第一单元中国特色社会主义的开创、坚持、捍卫和发展单元测试-2023-2024学年中职高教版(2023)中国特色社会主义
- 产后尿潴留的预防及护理
- 世界学生日活动主题班会
评论
0/150
提交评论