【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.rhkb.cn/news/336618.html

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

相关文章

vue-Dialog 自定义title样式

展示结果 vue代码 <el-dialog :title"title" :visible.sync"classifyOpen" width"500px" :showClose"false" class"aboutDialog"> <el-form :model"classifyForm" :rules"classifyRules">…

【赠书第26期】AI绘画教程:Midjourney使用方法与技巧从入门到精通

文章目录 前言 1 Midjourney入门指南 1.1 注册与登录 1.2 界面熟悉 1.3 基础操作 2 Midjourney进阶技巧 2.1 描述词优化 2.2 参数调整 2.3 迭代生成 3 Midjourney高级应用 3.1 创意启发 3.2 团队协作 3.3 商业应用 4 总结与展望 5 推荐图书 6 粉丝福利 前言 在…

自动控制:控制系统的稳定性

自动控制&#xff1a;控制系统的稳定性 在自动控制领域&#xff0c;控制系统的稳定性是一个至关重要的问题。稳定性决定了系统在受到扰动后是否能够恢复到平衡状态。本文将介绍控制系统稳定性的基本概念、如何利用特征值分析稳定性&#xff0c;并通过具体示例和Python代码展示…

【香橙派 AIpro】新手保姆级开箱教程:Linux镜像+vscode远程连接

香橙派 AIpro 开发板 AI 应用部署测评 写在最前面一、开发板概述官方资料试用印象适用场景 二、详细开发前准备步骤1. 环境准备2. 环境搭建3. vscode安装ssh插件4. 香橙派 AIpro 添加连接配置5. 连接香橙派 AIpro6. SSH配置 二、详细开发步骤1. 登录 juypter lab2. 样例运行3. …

基于51单片机的温度+烟雾报警系统设计

一.硬件方案 本设计采用51单片机为核心控制器&#xff0c;利用气体传感器MQ-2、ADC0832模数转换器、DS18B20温度传感器等实现基本功能。通过这些传感器和芯片&#xff0c;当环境中可燃气体浓度或温度等发生变化时系统会发出相应的灯光报警信号和声音报警信号&#xff0c;以此来…

【C语言回顾】预处理

前言1. 简单概要2. 预处理命令讲解结语 上期回顾: 【C语言回顾】编译和链接 个人主页&#xff1a;C_GUIQU 归属专栏&#xff1a;【C语言学习】 前言 各位小伙伴大家好&#xff01;上期小编给大家讲解了C语言中的编译和链接&#xff0c;接下来我们讲解一下预处理&#xff01; …

嘉立创使用gif

新建原理图 边框设置2 新建pcb图 放置焊盘 排列焊盘 新建符号 封号向导 新建封装 封装向导 符号与封装联结 原件查找 drc设计规则&#xff08;线之间的距离等 布线冲突 顶底层切换 T ,B 顶底连线&#xff0c;自动创造过孔 铺铜 泪滴 网格大小 吸附 元件库

【机器学习】Adaboost: 强化弱学习器的自适应提升方法

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Adaboost: 强化弱学习器的自适应提升方法引言Adaboost基础概念弱学习器与强学习…

C++ vector 模拟实现

vector的底层也是一个动态数组&#xff0c;他与 string 的区别就是&#xff0c;string 是专门用来存储字符类数据的&#xff0c;为了兼容C语言&#xff0c;使用C语言的接口&#xff0c;在string的动态数组内都会都开一块空间用来存 \0 &#xff0c;而vector则不会。 首先我们要…

【Linux】TCP协议【上】{协议段属性:源端口号/目的端口号/序号/确认序号/窗口大小/紧急指针/标记位}

文章目录 1.引入2.协议段格式4位首部长度16位窗口大小32位序号思考三个问题【demo】标记位URG: 紧急指针是否有效提升某报文被处理优先级【0表示不设置1表示设置】ACK: 确认号是否有效PSH: 提示接收端应用程序立刻从TCP缓冲区把数据读走RST: 对方要求重新建立连接; 我们把携带R…

《QT实用小工具·六十八》基于QMenu开发的炫酷菜单栏

1、概述 源码放在文章末尾 该项目基于QMenu实现了炫酷的菜单栏效果&#xff0c;包含了如下功能&#xff1a; 1、实现了类似word菜单栏的效果&#xff0c;可以在菜单栏中横向添加不同的菜单 2、鼠标点击菜单可以展开菜单栏&#xff0c;再次点击菜单可以收起菜单栏 3、鼠标点击笑…

C++ wasm 使用教程

环境搭建 git clone https://github.com/emscripten-core/emsdk.gitgit pull./emsdk install latest./emsdk activate latestsource ./emsdk_env.sh./emcc -v && ./emcc c11__Thread_local.c -s WASM_WORKERS --threadprofiler --memoryprofiler -v -o test.html &…

鸿蒙OS开发:【一次开发,多端部署】(分栏控件)

一多分栏控件 介绍 本示例分别展示了多场景下&#xff0c;一多分栏控件的响应式变化效果。 本示例分别用到了[SideBarContainer]组件与[Navigation]组件&#xff0c;对应使用场景如下&#xff1a; ABC&#xff1a;即SideBarContainer组件组合Navigation组件AC&#xff1a;S…

AI企业需要“联盟营销”?一文带你探索AI企业营销新玩法!

为什么联盟营销对AI业务有较大优势 联盟营销在电商领域、saas领域与其他产品领域同样有效。在AI业务中&#xff0c;它有效的原因与其他领域大不相同。 高好奇心和试用率 AI领域是创新的热点。它吸引了一群渴望探索和尝试每一项新技术的人群。这种蓬勃的好奇心为聪明的AI企业提…

Linux 编译器gcc/g++使用

gcc/g同理 编译器运行过程 1. 预处理&#xff08;进行宏替换) gcc -E a.c -o a.i 预处理后还是c语言 -E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面 告诉gcc&#xff0c;从现在开始进行程序的翻译&#xff0c;将预处理工作做完停下 2. 编译&#x…

【因果推断python】2_因果关系初步2

目录 偏差 关键思想 偏差 偏差是使关联不同于因果关系的原因。幸运的是&#xff0c;我们的直觉很容易理解。让我们在课堂示例中回顾一下我们的平板电脑。当面对声称为孩子提供平板电脑的学校会获得更高考试成绩的说法时&#xff0c;我们可以反驳说&#xff0c;即使没有平板电…

新疆 | 金石商砼效率革命背后的逻辑

走进标杆企业&#xff0c;感受名企力量&#xff0c;探寻学习优秀企业领先之道。 本期要跟砼行们推介的标杆企业是新疆砼行业的龙头企业&#xff1a;新疆兵团建工金石商品混凝土有限责任公司&#xff08;以下简称&#xff1a;新疆金石&#xff09;。 从年产80万方到120万方&am…

Go 和 Delphi 定义可变参数函数的对比

使用可变参数函数具有灵活性、重用性、简化调用等优点&#xff0c;各个语言有各自定义可变参数函数的方法&#xff0c;也有通用的处理方法&#xff0c;比如使用数组、定义参数结构体、使用泛型等。 这里总结记录一下 go、delphi 的常用的定义可变参数函数的方式&#xff01; 一…

数据挖掘与机器学习——回归分析

目录 回归分析定义&#xff1a; 案例&#xff1a; 线性回归 预备知识&#xff1a; 定义&#xff1a; 一元线性回归&#xff1a; 如何找出最佳的一元线性回归模型&#xff1a; 案例&#xff1a; python实现&#xff1a; 多元线性回归 案例&#xff1a; 线性回归的优缺点…

基于xilinx FPGA的 FFT IP使用例程说明文档(可动态配置FFT点数,可计算信号频率与幅度)

目录 1 概述2 IP examples功能3 IP 使用例程3.1 IP设置3.2 fft_demo端口3.3 例程框图3.4 仿真结果3.5 仿真验证得出的结论4 注意事项5例程位置 1 概述 本文用于讲解xilinx IP 的FFT ip examples的功能说明&#xff0c;方便使用者快速上手。 参考文档&#xff1a;《PG109》 2 …