【Python编程实践2/3】Python图像处理模块(上)

目录

引言

目标

安装模块

Windows系统

macOS系统

路径

Windows路径

​编辑macOS路径        

windows路径报错

windows路径前的r

示例代码

windows快速查看路径

macOS快速查看路径

打开图片

展示图片

下节预告

总结


引言

        欢迎各位大佬垂阅本篇Python实践博客,来到这儿,你已经超越%89.60的Python入门学习者啦~

        前面的博客,我们学习了Python的数据类型、判断、循环、函数等知识点。你是否会有这样的疑问:这些简单的代码有些什么实际的应用呢?基于这一些基础语法,再结合前人搭建的开源模块,我们能用Python解决很多实际问题。

        接下来的两篇博客,我们来通过图片处理操作,来解决一个困扰小栗子的难题。小栗子最近绘制了一些插画,想将它们分享到各大平台,但又担心这些插画被他人盗用,那有什么好的办法能帮助小栗子来解决这个难题呢?

        其实,我们可以利用通过第三方提供的pillow模块,给插画添加指定的水印,这个过程需要以下六个步骤:1、安装模块 2、打开图片 3、展示图片 4、加载字体 5、绘制文字 6、保存图片

        今天,我们来学习前面三个步骤。

        前面,我们学习了Python自带的内置模块。今天,我们来学习第三方模块的知识。由于系统学习一个第三方模块,会花费不少时间。因此,为了尽快在本地感受第三方模块的魅力,这里我们以相对简单的pillow模块进行讲解。

目标

        pillow模块是一个第三方图像处理模块,主要用于图像的基本处理。接下来的两篇博客,我们将利用pillow模块给图片添加自己想要的水印。

        本篇,我们先来学习如何利用pillow模块,打开并展示出一张图片

安装模块

        pillow模块是第三方模块,在导入使用前,必须先进行安装。下面,我们以pillow为例,来看看如何安装第三方模块。

        为了安装第三方模块,我们需要一个叫做pip的工具。而pip工具,在我们前面安装Python环境的时候,已经自动安装了。现在,我们可以直接在电脑上使用pip工具来安装第三方模块。大家可以在自己的电脑上跟着一起完成安装

Windows系统

        要使用pip工具安装第三方模块,需要在Windows的命令提示符(终端)里进行。我们可以使用以下两种方式之一打开终端:

        1. 在电脑的「开始菜单」旁的搜索栏里输入 cmd 后,敲击回车;

        2. 同时在键盘上按下WIN和R,在运行框里输入 cmd 后,敲击回车。

        打开窗口,并且确保电脑已经连入互联网后,就可以开始安装第三方模块了。比如,我们要安装pillow模块。只需要在窗口内输入: pip install pillow,然后敲击回车。

        安装过程如图。点击回车后,会出现很多的安装信息。当看到Successfully installed...时,说明模块已经安装成功。

        大家还可能会遇到黄色的警告,这是在提示需要升级pip工具。可以选择忽视。

        若在自己电脑上安装不上或安装缓慢,可使用以下命令进行加速:pip install pillow==9.1.0 -i https://pypi.mirrors.ustc.edu.cn/simple/

macOS系统

        要使用pip工具安装第三方模块,需要在macOS的终端里进行。我们可以使用以下两种方式之一打开终端:

        1. 我们在启动台中找到并打开【其他】,点击【终端】图标;

        2. Command + 空格键跳出搜索框,输入ter按回车即可打开终端。

        打开终端窗口,并且确保电脑已经连入互联网后,就可以开始安装第三方模块了。比如,我们要安装pillow模块。只需要在窗口内输入: pip3 install pillow,然后敲击回车。

        安装过程如图。点击回车后,会出现很多的安装信息。当看到Successfully installed...时,说明模块已经安装成功。大家还可能会遇到黄色的警告,这是在提示需要升级pip工具,可以选择忽视。

        若在自己电脑上安装不上或安装缓慢,可使用以下命令进行加速:pip3 install pillow -i https://pypi.mirrors.ustc.edu.cn/simple/

路径

        模块安装后,就可以导入使用了。而在我们使用pillow模块去打开图片前,我们需要知道该图片在电脑中的位置。而这个位置就是 -- 路径

定义路径表示文件或者文件夹的位置。

隐喻路径就像现实中的地址一样,帮助我们找到目标文件或文件夹在什么位置。

Windows路径

        现在我们常用的计算机系统分为 Windows系统 和 macOS系统。在Windows系统的路径中,我们使用反斜线 ( \ ) 分隔各个文件夹和文件名。同时,在路径的最前面,是盘符的字母和英文冒号,表示文件或文件夹在哪个盘的路径下。

        注意:盘符就是电脑里的C盘、D盘的字母C和D。



macOS路径        

        在macOS系统中,文件夹和文件名使用正斜线 ( / ) 进行分隔。由于macOS系统中没有盘符的概念,所以其路径都是从根目录( / ) 开始。

        注意:根目录是指最上一级目录,它如同一棵大树的“根”一般,所有的文件和文件夹都以它为起点。

windows路径报错

        如图,当我们输出Windows系统的路径时,会出现报错。而引起这个错误的原因就是转义的问题。在Windows系统中,读取文件路径使用反斜线 ( \ )。但是在Python字符串中,反斜线 ( \ )有转义的含义,比如:\n代表换行。

windows路径前的r

        解决反斜线 ( \ )转义的问题,有一个常用的办法。就是在路径前面加字母r,表示保持字符的原始值。

        比如 r"C:\Users\photo.jpg"

示例代码

示例代码中,展示了macOS系统Windows系统中路径的使用方法。

# 将文件路径/Users/photo.jpg,赋值给macOS_path
macOS_path = "/Users/photo.jpg"# 将文件路径C:\Users\photo.jpg,赋值给Windows_path
Windows_path = r"C:\Users\photo.jpg"# 输出变量macOS_path
print(macOS_path)
# 输出变量Windows_path
print(Windows_path)



windows快速查看路径

        这里提供Windows快速获取路径的两种方法:

        1. 按下Shift 键不放,然后对应文件上单击右键 ,选择【 复制文件地址 】即可得快速得到路径;

        2. 将对应文件拖入终端,即可快速得到路径。(注意,在键盘上按下WIN和R,在运行框里输入 cmd 后,敲击回车打开终端。)

macOS快速查看路径

        这里提供macOS快速获取路径的两种方法:

        1. 找到文件,使用快捷键option+command+c

        2. 将对应文件拖入终端,即可快速得到路径。(注意,Command + 空格键跳出搜索框,输入ter按回车即可打开终端。)

打开图片

        安装完模块,学习完路径后,我们就可以使用pillow模块来打开图片了。下面,我们就来学习如何打开一张指定路径的图片

        通过导入Image类,然后使用该类中的open()方法,打开一张图片。

# 从PIL模块中导入Image类
from PIL import Image
# 使用Image类的open()方法打开图片,赋值给变量img
img = Image.open("/Users/yequ/team.png")

从模块中导入类

        使用from … import语句,从PIL模块中导入了类Image。注意,pillow模块比较特殊,需要使用PIL的简写形式。

类名

        类名Image,表明接下来要调用Image类中的方法。

句点

        用于连接类名和方法名。

方法

        类中的open()方法,作用是打开指定路径的图片

对象名

变量img是通过类方法打开的一个图片对象

展示图片

   Image中的open()方法,用于打开图片。而展示图片,就需要用Image中的show()方法。通过导入Image类,然后使用该类中的open()方法,打开一张图片。最后,通过该类中的show()方法展示图片。

# 从PIL模块中导入Image类
from PIL import Image
# 使用Image类的open()方法打开图片,赋值给变量img
img = Image.open("/Users/yequ/team.png")
# 展示图片
img.show()

展示图片

直接在图片对象img后使用show()方法,展示图片。方法的调用语法为:对象.方法名()

下节预告

        今天,我们通过导入模块打开并展示了图片。下次,我们将继续使用PIL模块中的其他类,来给图片添加水印,并将其保存在本地的电脑上

总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/19415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【教学类-59-01】专注力视觉训练01(圆点百数图)

背景需求: 视觉训练的神奇效果,让你的宝贝成为焦点 - 小红书魔法视觉追踪-视觉训练—— 🔍视觉训练🔍 🔹想要提高宝宝的专注力,视觉训练是个绝佳方法! 🔹让宝宝仔细观察数字的路线&a…

微信小程序毕业设计-农场驿站平台系统项目开发实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…

HoneyTrap蜜罐系统实践操作@FreeBSD

HoneyTrap介绍 HoneyTrap是一个可扩展的开源系统,用于运行、监控和管理蜜罐。 HoneyTrap蜜罐系统通过在网络中部署感应节点,实时感知周边网络环境,并将感应节点的日志进行实时存储和可视化分析,从而实现对网络环境中威胁情况的感…

Honor of Kings 2024.03.29 Ban for 3 day

我又被举报消极然后禁赛 都说了别选蔡文姬,对面三个肉,非要选个软辅助 吐槽下这游戏策划:游戏体验感越来越差,公正也很差 对说了对面4个法师,就是不出魔抗,把把都是0-N开局,到底谁消极啊&#x…

【工具使用】在vscode中用python绘图

安装拓展Jupyter Keymap 然后重启vscode在代码之前加上这个代码,利用jupyter一行一行运行 # %%点击Run Cell即可运行 # %% import matplotlib.pyplot as plt# 提供的数据 data [0.02856750446367257, 0.248564674096589, 0.1645266594124048, 0, 0.375108941955725…

二叉树链式结构的前序_中序_后续_层序遍历【详细图解】

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 博主主页:LiUEEEEE                        …

SAP 生产订单报工函数BAPI_PRODORDCONF_CREATE_TT不返回报错信息

最近财务一直反馈MES报工的数据都没有成本,然后去查看原因发现是财务当月的KP26的价格没有进行维护,导致没有收集到工单的报工成本。 但是在前台操作CO11 报工的时候,系统会给出报错的信息 但是我们在调用函数BAPI_PRODORDCONF_CREATE_TT的时候,系统并没有返回报错的信息…

普通测径仪和智能测径仪的五大区别

在工业自动化和精密测量的领域中,测径仪是不可或缺的重要工具。随着科技的进步,测径仪也在不断地进行技术革新和升级,从传统的普通测径仪发展到如今的智能测径仪。本文将详细探讨普通测径仪与智能测径仪之间的五大区别。 一、测量精度与稳定…

【Tlias智能学习辅助系统】01 准备工作

Tlias智能学习辅助系统 01 创建员工、部门表创建springboot工程,引入对应的起步依赖(web、mybatis、mysql驱动、lombok)准备 Mapper、Service、Controller 等基础结构MapperServiceControllerpojo封装类application.properties 接口开发规范 创建员工、部门表 -- 创…

FPGA基础:触发器和锁存器

目录 锁存器(Latch)D触发器(Flip-Flop)最基本时序电路时序块(Sequential blocks):同步与异步触发器概念触发器分类触发器的Verilog实现1. 上升沿触发的触发器2. 带异步复位、上升沿触发的触发器3. 带异步复…

raid配置与实战10

一、raid理论 1、raid概述 raid(磁盘阵列):是用不同的硬盘分区,组成一个逻辑上的硬盘,高可用(冗余)。 2、raid级别 2.1、raid0条带化存储 数据分散在多个物理磁盘上的存储方式,…

新媒体时代,LCD电子价签赋予零售场景新活力

近年来,全球企业迅速掀起了数字化转型的浪潮,加速了新零售科技的发展与应用。在实体零售门店中,商品货架显示逐渐趋向智能化和多样化。然而,在信息传播日益碎片化和视频化的时代,零售门店如何更有效地吸引消费者的注意…

英飞凌 AURIX TriCore 单片机开发入门

文章目录 目的硬件准备AURIX™ Development StudioInfineon MemtoolAURIX™ iLLD Drivers总结 目的 英飞凌的32位 AURIX™ TriCore™ 系列单片机 经常用于汽车和工业领域。开发该系列单片机比较常用的开发环境有 HighTec 和 AURIX™ Development Studio 。本文将基于后者&…

linux镜像虚拟机创建共享文件夹详细步骤 -- 和本地电脑传输文件

主机与虚拟机之间传递文件,最快捷的方法莫过于共享文件夹。此方法不需要复制文件,而且可以节省硬盘空间。 具体设置步骤如下: 打开自己的电脑,创建共享的文件夹,完成后鼠标右击刚刚创建的共享文件夹,选择…

设计模式 18 迭代器模式 Iterator Pattern

设计模式 18 迭代器模式 Iterator Pattern 1.定义 迭代器模式 (Iterator Pattern) 是一种行为型设计模式,它提供了一种访问集合元素的标准方法,而无需暴露集合的内部表示。 提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该…

Redis之内存管理过期、淘汰机制

1.Redis内存管理 我们的redis是一个内存型数据库,我们的数据也都是放在内存中的,内存是有限的空间,当数据满了之后,我们要怎么样继续保证redis的可用性呢?我们就需要采取点管理措施和机制来保证我们redis的可用性。 在redis.co…

一套saas模式云MES系统源码,基于springboot+vue.js+uniapp开发

一套saas模式云MES系统源码,基于springbootvue.jsuniapp开发 MES系统简介 MES系统,即制造执行系统(Manufacturing Execution System),是一种面向制造企业车间执行层的生产信息化管理系统。它位于上层的企业资源规划&a…

应用案例|精密制造中使用复合机器人得到显著提升

精密制造行业对设备的精度、稳定性和效率要求极高,而复合机器人凭借其多功能性、高度灵活性和精准控制能力,正逐渐成为该领域的新宠。以下是一个富唯智能复合机器人在精密制造中的应用案例。 案例背景 某知名汽车零部件制造企业,专注于生产…

【JS】并发控制

需求 控制网络请求并发数控制并发按顺序返回结果 码 /** * 控制并发 * param {Function} fn 逻辑处理函数 * param {Array} arr 发送的数据 * param {Number} [max3] 并发数 默认3 * param {Number} [orderfalse] 按顺序返回执行结果 默认false * param {Number} [retry1] 重试…

vue项目集成萤石云在Web系统中实现实时摄像头监控及控制功能

需求 需求: 开发人员在产线上放置一个萤石摄像头,前端在可视化大屏上实时监控,且控制左右上下功能。 效果 萤石云接入web前期准备工作 阅读萤石云API文档:萤石云开放平台开发者文档 阅读萤石云控制API文档:萤石云摄…