版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单元11Python教你玩转PDF文件任务11.1提取PDF文件中的表格【任务目标】使用PyMuPDF库提取文件“test11_01.pdf”中的所有表格,将其存入一个Excel文件,每个表格占一个工作表。【任务实施】……10.1读取PDF文件内容读取PDF文件内容主要包括读取表格、文本和图片等操作。11.1.1读取表格在PyMuPDF库中,调用页面对象的find_tables()方法可读取页面中的所有表格,再调用表格对象的to_pandas()方法可将表格转换为pandas的DataFrame对象,进一步将DataFrame对象写入Excel文件。示例代码如下。11.1.2读取文本PyMuPDF库的open()方法用于打开现有PDF文件或者创建空白PDF文件,该方法返回一个文档对象。调用文档对象的load_page()方法可加载指定页面,返回页面对象。再调用页面对象的get_text()方法可返回页面中的所有文本。示例代码如下。11.1.3读取图片打开PDF文件后,调用页面对象的get_images()方法可返回一个包含页面中所有图片对象的列表,再调用文档对象的extract_image()方法即可从图片对象中提取图片。示例代码如下。任务11.2批量转换PDF文件【任务目标】“test11_05”文件夹中有多个Word文档,编写一个程序将这些文档转换成PDF文件。【任务实施】……11.2PDF文件高级操作PDF文件高级操作包括合并、拆分、加密、解密文件,为文件添加水印,以及文件格式转换等。11.2.1合并和拆分文件使用PyMuPDF库,调用文件对象的insert_pdf()方法即可实现文件合并。示例代码如下。调用PyMuPDF库的insert_pdf()方法将原PDF文件页面插入新的PDF文件,即可实现文件拆分。insert_pdf()方法的第一个参数用于指定原PDF文件,from_page参数用于指定插入的起始页码,to_page参数用于指定插入的结束页码。示例代码如下。11.2.2加密和解密文件在使用PyMuPDF库的save()方法保存PDF文件时,可通过参数设置加密方法对文件进行加密,示例代码如下。PyMuPDF库的authenticate()方法用于验证密码并解密PDF文件,示例代码如下。11.2.3为文件添加水印1.添加文本水印调用页面对象的insert_text()方法可为文件添加文本水印,示例代码如下。在insert_text()方法中,参数overlay值为True时文本位于原页面文字上方,为False时文本位于原页面文字下方;参数rotate用于指定旋转角度,其有效值为0、90、180和270。如果需要添加其他旋转角度(如45°)的水印,可使用参数morph设置变换矩阵,示例代码如下。2.添加图片水印调用页面对象的insert_image()方法可为文件添加图片水印,示例代码如下。如果需要添加有旋转角度的图片水印,可先旋转图片,然后调用insert_image()方法将其添加到PDF文件,示例代码如下。11.2.4文件格式转换comtypes是一个Python库,可以通过调用MicrosoftWord或者MicrosoftPowerPoint的COM接口实现Word文档、PPT文档与PDF文件之间的转换。comtypes库安装命令如下。1.将Word文档转换为PDF文件调用comtypes.client.CreateObject()方法初始化Word应用程序后,可用其打开Word文档,然后将Word文档另存为PDF文件,示例代码如下。2.将PPT文档转换为PDF文件调用comtypes.client.CreateObject()方法初始化PowerPoint应用程序后,可用其打开PPT文档,然后将PPT文档另存为PDF文件,示例代码如下。3.将PDF文件转换为Word文档与将Word文档转换为PDF文件的操作方法类似,首先利用Word应用程序打开PDF文件,然后将PDF文件另存为Word文档,示例代码如下。【综合实例】生成录取通知书存档联(二)文档“test11_17.docx”保存了录取通知书存档联模板。编写一个Python程序,从文件“test11_17.xlsx”中读取录取信息,将学生的录取编号、姓名、性别、证件号码、专业名称依次填入模板中表格第2列的各行,将录取时间、总分依次填入模板中表格第4列的第4、第5行。最后,将录取照片插入文档末尾。录取照片保存在录取照片文件夹中,照片用学生的录取编号命名,如“20250001.jpg”。每个学生的存档联单独保存为一个PDF文件,文件用学生的录取编号命名,如“20250001.pdf”,并将其保存到存档联文件夹中。THANKYOU单元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)de
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024湘教版八年级地理下册第七章《区域内外联系与协同发展》每节课学习任务单汇编(含五个任务单)
- 企业战略管理与竞争优势分析
- 网络安全防护产品选型与实施指南
- 2025年剧毒化学品操作测试
- 2-Chloro-N-methylethanamine-hydrochloride-生命科学试剂-MCE
- 2.3 云平台API认知工业互联网
- 甘肃警察职业学院《环境艺术设计》2024 - 2025 学年第一学期期末试卷
- 2026八年级上语文总结方法指导训练
- Lin 基础技术教程 9
- 农庄草地施工方案(3篇)
- 交通法规考试题库(含答案)
- 2025年运输投送专业军队文职面试高频问题解答
- 《流体机械》课件第5章叶片式气体机械
- 汽车修理厂突发环境事件应急预案
- 混凝土施工质量检验与控制方案
- 南京机电职业技术学院单招《语文》测试卷及答案详解参考
- 公路养护工资方案(3篇)
- 国有林考试题库及答案
- 低蛋白血症的护理
- 用人单位职业卫生管理自查表
- J电子组装公司全面质量管理体系优化研究
评论
0/150
提交评论