版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单元12Python教你玩转图像处理任务【任务目标】文件夹“test12_01”中有若干PNG、BMP格式的图像,编写一个Python程序,将这些图像转换为JPEG格式。【任务实施】……12.1图像基础操作读取和显示图像图像保存与格式转换裁剪图像绘制图形12.1.1读取和显示图像cv2.imread()函数用于将图像读取到内存,其基本语法格式如下。其中,相关参数说明如下。(1)filename:要加载的图像文件的路径(字符串),可以是绝对路径或相对路径。(2)flags:可选参数,用于指定图像读取方式,默认值为cv2.IMREAD_COLOR。cv2.imread()函数根据文件内容(而非扩展名)确定图像格式,并将读取的图像数据保存在一个NumPy数组中。默认情况下,cv2.imread()函数将图像转换为三通道BGR彩色图像格式,返回的三维数组按B、G、R通道顺序存储图像数据。cv2.imshow()函数用于在窗口中显示图像,其基本语法格式如下。其中,相关参数说明如下。(1)winname:窗口名称(字符串类型),显示在窗口标题栏。每个显示图像窗口的名称唯一。(2)img:要显示的图像数据,通常是一个NumPy数组(由cv2.imread()函数或其他图像处理函数生成)。示例代码如下。cv2.imread()函数可以实现按指定的方式读取图像,如以灰度模式读取图像,示例代码如下。12.1.2图像保存与格式转换cv2.imwrite()函数用于将图像存入指定文件,以文件扩展名指定图像格式,其基本语法格式如下。其中,相关参数说明如下。(1)filename:要保存的文件名或路径(字符串),必须包含文件扩展名(如.jpg、.png等)。(2)img:要保存的图像数据,必须是有效的NumPy数组。(3)params:可选参数,用于指定保存图像时使用的压缩参数或其他格式特定的参数,多数情况可以省略。①JPEG格式:使用[cv2.IMWRITE_JPEG_QUALITY,质量值]来设置图像质量(质量值范围为0~100),图像质量直接影响图像文件大小。②PNG格式:使用[cv2.IMWRITE_PNG_COMPRESSION,压缩级别]来调整压缩级别(压缩级别0~9),压缩级别直接影响图像文件大小。示例代码如下。12.1.3裁剪图像OpenCV库使用NumPy数组保存图像数据,所以裁剪图像等同于NumPy数组的切片操作。示例代码如下。12.1.4绘制图形OpenCV库中常用的绘制图形和文本的函数如下。(1)cv2.line():绘制直线。(2)cv2.rectangle():绘制矩形。(3)cv2.circle():绘制圆。(4)cv2.ellipse():绘制椭圆。(5)cv2.polylines():绘制多边形。(6)cv2.putText():绘制文本。(7)cv2.arrowedLine():绘制箭头。示例代码如下。cv2.putText()函数不能在图像中绘制汉字,可使用PIL模块在图像中绘制汉字,示例代码如下。任务12.2批量处理图像尺寸【任务目标】文件夹“test12_08”中保存了多个图像文件,编写一个
Python
程序,使用OpenCV库,将这些图像文件的分辨率调整为480px
×
640px(宽×高),大小小于40KB,格式转化为JPEG。【任务实施】……12.2图像处理缩放图像图像编码翻转图像旋转图像图像模糊抠图12.2.1缩放图像cv2.resize()函数用于缩放图像,支持缩小、放大和指定输出尺寸,其基本语法格式如下。其中,相关参数说明如下。(1)src:输入图像。(2)dsize:输出图像的尺寸,格式为(宽度,高度)。如果dsize设置为None,那么必须设置fx和fy参数来确定尺寸。(3)fx:可选参数,沿水平轴(x轴)方向的缩放比例。(4)fy:可选参数,沿垂直轴(y轴)方向的缩放比例。(5)interpolation:可选参数,插值方法,常用的选项如下。①cv2.INTER_NEAREST:最近邻插值。②cv2.INTER_LINEAR:双线性插值(默认)。对于放大图像,一般使用此选项。③cv2.INTER_CUBIC:双三次插值(即Bicubic插值,4px×4px邻域),效果比双线性插值好,但速度较慢,适用于缩小图像和放大较小图像。④cv2.INTER_LANCZOS4:Lanczos插值(8px×8px邻域),质量最高,但计算量最大。单击此处编辑母版标题样式示例代码如下。12.2.2图像编码cv2.resize()函数在缩放图像时,会在一定程度上影响图像文件大小。如果需要按要求调整图像文件大小,可使用cv2.imencode()函数。cv2.imencode()函数用于将图像编码为内存中的字节流,其基本语法格式如下。其中,相关参数说明如下。(1)retval:表明操作是否成功的布尔值。(2)buf:编码后的图像数据,以NumPy数组的形式返回。如果操作失败,则为空值。(3)ext:输出图像的格式扩展名字符串(如.jpg、.png等),包括前导点号。(4)img:要编码的图像。(5)params:可选参数,根据所选图像格式而定的编码参数,多数情况可以省略。例如,JPEG格式的质量可以通过[cv2.IMWRITE_JPEG_QUALITY,质量值]来设置;PNG格式的压缩级别可以通过[cv2.IMWRITE_PNG_COMPRESSION,压缩级别]来调整。示例代码如下。12.2.3翻转图像cv2.flip()函数用于沿指定轴翻转图像,其基本语法格式如下。其中,相关参数说明如下。(1)src:输入图像(NumPy数组),通常通过cv2.imread()读取。(2)flipCode:控制翻转方向。取值有0,表示垂直(上下)翻转;1,表示水平(左右)翻转;-1,表示同时垂直和水平翻转(相当于180°旋转)。示例代码如下。12.2.4旋转图像cv2.warpAffine()函数可用于旋转、缩放、平移、倾斜图像,其基本语法格式如下。其中,相关参数说明如下。(1)src:输入图像(NumPy数组)。(2)M:2×3的变换矩阵(NumPy数组),定义变换类型(如旋转、缩放等),需手动构造或通过cv2.getRotationMatrix2D()等函数生成。(3)dsize:输出图像的尺寸,格式为(宽度,高度)。(4)dst:可选参数,输出图像。(5)flags:可选参数,插值方法,如cv2.INTER_LINEAR、cv2.INTER_CUBIC。(6)borderMode:可选参数,边界填充方式,如cv2.BORDER_CONSTANT(用常数填充)、cv2.BORDER_REFLECT(完全反射)。(7)borderValue:可选参数,若borderMode为cv2.BORDER_CONSTANT,可指定填充颜色(默认为黑色)。示例代码如下。12.2.5图像模糊图像模糊也称图像平滑处理,通常应用于平滑图像、去噪或减弱细节。1.均值滤波cv2.blur()函数用于实现均值滤波,通过计算邻域像素的平均值来平滑图像,常用于去噪或减弱细节。其基本语法格式如下。其中,相关参数说明如下。(1)src:输入图像(NumPy数组)。(2)ksize:模糊核的尺寸,格式为(宽度,高度),宽度和高度均为正奇数,至少有一个值大于1。常见核尺寸有(3,3)、(5,5)、(7,7)等,数值越大模糊效果越强。(3)anchor:可选参数,核的锚点位置,默认为(1,1),表示使用核的中心点。(4)borderType:可选参数,边界填充方式,如cv2.BORDER_DEFAULT(默认,反射填充)。示例代码如下。2.高斯滤波cv2.GaussianBlur()函数用于实现高斯滤波,通过高斯核加权平均邻域像素值来平滑图像,常用于降噪或预处理。cv2.blur()函数采用简单平均,可能导致边缘过度模糊,而cv2.GaussianBlur()函数采用高斯加权,可以产生更自然的平滑效果且保留边缘细节。cv2.GaussianBlur()函数基本语法格式如下。其中,相关参数说明如下。(1)src:输入图像(NumPy数组)。(2)ksize:高斯核的尺寸,格式为(宽度,高度),宽度和高度均为正奇数,至少有一个值大于1。常见核尺寸有(3,3)、(5,5)、(7,7)等,数值越大模糊效果越强。(3)sigmaX:可选参数,高斯核在x轴方向的标准差。(4)sigmaY:可选参数,高斯核在y轴方向的标准差。(5)borderType:可选参数,边界填充方式,同cv2.blur()函数。3.中值滤波cv2.medianBlur()函数用于实现中值滤波,特别擅长去除椒盐噪声(Salt-and-PepperNoise),同时能较好地保留边缘细节。其基本语法格式如下。其中,相关参数说明如下。(1)src:输入图像(NumPy数组)。(2)ksize:模糊核的尺寸,必须是大于1的奇数(如3、5、7等),但不能大于图像宽度和高度。示例代码如下。4.双边滤波cv2.bilateralFilter()函数用于实现双边滤波,能够在平滑图像的同时有效保留边缘细节(如花瓣轮廓),常用于去噪或增强图像细节(如人脸磨皮、照片柔化)。其基本语法格式如下。其中,相关参数说明如下。(1)src:输入图像(NumPy数组)。(2)d:滤波器的直径(邻域半径),控制邻域的大小。(3)sigmaColor:颜色相似性权重的标准差,控制邻域内像素颜色差异的容忍度,值越大则允许颜色差异更大的像素参与平滑,效果接近高斯滤波;值越小则仅允许颜色相近的像素参与平滑,保留更多细节。(4)sigmaSpace:空间相似性权重的标准差,控制邻域内像素距离的容忍度,值越大则允许更远的像素参与计算,平滑范围扩大;值越小则仅允许邻近像素参与计算,保留局部细节。(5)borderType:边界模式。示例代码如下。5.自定义卷积滤波cv2.filter2D()函数用于实现自定义卷积滤波,通过用户定义的卷积核对图像进行处理,适用于自定义图像增强(如锐化、边缘检测)、实现特定滤波效果(如浮雕、模糊)等场景。其基本语法格式如下。其中,相关参数说明如下。(1)src:输入图像(NumPy数组)。(2)ddepth:输出图像的深度(数据类型),常用值为1,表示与输入图像深度相同。(3)kernel:自定义卷积核(NumPy数组),尺寸必须是奇数(如3×3、5×5),元素为浮点型(float32)或整型。(4)dst:输出图像。(5)anchor:核的锚点位置,默认为(1,1),表示使用核的中心点。(6)delta:添加到最终结果的值,默认为0。(7)borderType:边界填充方式,默认为cv2.BORDER_DEFAULT(反射填充)。常用的卷积核如下。(1)均值核(2)锐化核(3)边缘检测核(SobelX方向)示例代码如下。12.2.6抠图cv2.grabCut()函数用于实现交互式图像分割,尤其擅长从复杂背景中精准提取目标(如抠图),其基本语法格式如下。其中,相关参数说明如下。(1)img:输入图像(NumPy数组)。(2)mask:输入和输出的掩码图像,用于确定图像中的背景和前景。掩码图像中,0表示确定的背景,1表示确定的前景,2表示可能的背景,3表示可能的前景。在手动创建掩码图像(如使用画图)时,用黑色标注背景,白色标注前景。(3)rect:可选参数,表示矩形区域(x,y,w,h),用于快速标注目标的大致位置(替代手动创建掩码图像)。若rect=None,则必须提供初始掩码图像mask。(4)bgdModel和fgdModel:背景和前景的临时模型,需初始化为np.zeros((1,65),
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗行业人力资源主管的工作要点
- 企业内部合规律师的角色与职责探讨
- 金融分析师招聘面试全流程及技巧指导
- 中小学航空演讲稿
- 2025年AI艺术生成工程师的职业网络拓展方法
- 运动员英文介绍演讲稿
- 正能量激励短演讲稿
- 文化自信冬奥会演讲稿
- 以自律浇灌青春演讲稿
- 人生梦想的启示演讲稿
- 人音版初中音乐☆游击队歌课件
- 物资仓库消防应急预案范文
- 义务教育(数学)新课程标准(2022年修订版)
- 赣美版(江西)小学四年级美术下全册教案
- 工程部质量停止点检查方案说明
- 《值班机工考证实训》教学大纲
- 中班棉签画PPt
- (完整word版)施工升降机附墙架施工方案
- 轻型钢结构工程设计专项资质标准(共5页)
- 烘干机技术协议样本
- 附件党组织书记抓党建工作述职评议表-附件
评论
0/150
提交评论