【深度学习实验】图像处理(一):Python Imaging Library(PIL)库:图像读取、写入、复制、粘贴、几何变换、图像增强、图像滤波

文章目录

  • 一、实验介绍
  • 二、实验环境
    • 1. 配置虚拟环境
    • 2. 库版本介绍
  • 三、实验内容
    • 0. 安装 PIL 库
    • 1. 图像读取和写入
      • a. 图像读取
      • b. 图像写入
      • c. 构建新图像
    • 2. 图像复制粘贴
      • a. 图像复制
      • b. 图像局部复制
      • c. 图像粘贴
    • 3. 几何变换
      • a. 图像调整大小
      • b. 图像旋转
      • c. 图像翻转
    • 4. 图像增强
      • a. 图像亮度增强
      • b. 图像颜色增强
      • c. 图像对比度增强
      • d. 图像锐度增强
    • 5. 图像滤波
      • a. 图像滤波 - 浮雕
      • b. 图像滤波 - 轮廓

一、实验介绍

  图像处理在深度学习领域中起到了至关重要的作用,Python Imaging Library(PIL)作为一种主流的图像处理库,为图像的读取、处理和增强提供了丰富的功能。

  本实验将介绍 PIL 的基本用法,主要包括图像读取、写入、复制、粘贴、几何变换以及图像增强、图像滤波等方面。

Pillow v2.4.0 (PIL fork)

二、实验环境

  本系列实验使用了PyTorch深度学习框架,相关操作如下:

1. 配置虚拟环境

conda create -n DL python=3.7 
conda activate DL
pip install torch==1.8.1+cu102 torchvision==0.9.1+cu102 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
conda install matplotlib
 conda install scikit-learn

2. 库版本介绍

软件包本实验版本目前最新版
matplotlib3.5.33.8.0
numpy1.21.61.26.0
python3.7.16
scikit-learn0.22.11.3.0
torch1.8.1+cu1022.0.1
torchaudio0.8.12.0.2
torchvision0.9.1+cu1020.15.2

三、实验内容

0. 安装 PIL 库

  可以使用以下命令:

pip install pillow

1. 图像读取和写入

  下面,我将介绍如何使用 PIL 的 Image.open 方法读取图像,并使用 display 方法显示图像。展示了如何使用 save 方法将图像保存到设备上、使用 Image.new 构建新的图像。

a. 图像读取

from PIL import Image

# we can use open api to load image data 
img = Image.open('qomolangma.jpg')
print(img.format,img.size)
# show your image
display(img)

在这里插入图片描述

b. 图像写入

import os

# we can utilize save() to write current image to device.
file_name = 'qomolangmah.jpg'
img.save(file_name)
print(os.path.join(os.getcwd(),file_name))

c. 构建新图像

image_new = Image.new('RGB', (50, 50), 'red')
display(image_new)
file_name = 'new.png'
image_new.save(file_name)
print(os.path.join(os.getcwd(), file_name))

在这里插入图片描述

2. 图像复制粘贴

  PIL 提供了灵活的图像复制和粘贴功能,下面我将介绍全局级别和局部级别的图像复制,以及使用 crop 方法进行局部图像复制。此外,还有图像的粘贴和合并操作。

a. 图像复制

img = Image.open('qomolangma.jpg')
img_copy = img.copy()
display(img_copy)

b. 图像局部复制

rect = (0, 0, 100, 100)
img_copy_local = img.crop(rect)
display(img_copy_local)

在这里插入图片描述

c. 图像粘贴

img_new = Image.open('new.png')
box = (10, 10, 60, 60)
img.paste(img_new, box)
display(img)

在这里插入图片描述

3. 几何变换

  图像的几何变换是图像处理中的重要任务之一,下面我将详细介绍图像的调整大小、旋转和翻转操作。

a. 图像调整大小

img = Image.open('qomolangma.jpg')
print(img.size)
img_resize = img.resize((512, 224))
print(img_resize.size)

b. 图像旋转

img_rotate = img.rotate(45)
display(img_rotate)

在这里插入图片描述
或使用:

img_rotate = img.transpose(Image.ROTATE_90)
img_rotate = img.transpose(Image.ROTATE_180)
img_rotate = img.transpose(Image.ROTATE_270)
display(img_rotate)

c. 图像翻转

img_flip = img.transpose(Image.FLIP_LEFT_RIGHT)
display(img_flip)

在这里插入图片描述

4. 图像增强

  PIL 提供了 ImageEnhanceImageFilter等 模块,用于图像的亮度、颜色、对比度和锐度的增强。下面,我将通过示例演示如何使用这些模块进行图像增强。

a. 图像亮度增强

from PIL import ImageEnhance

img = Image.open('qomolangma.jpg')
img_bri = ImageEnhance.Brightness(img)
img_bri_enh = img_bri.enhance(factor=0.5) # factor is from 0 to 1. 
display(img_bri_enh)

在这里插入图片描述

b. 图像颜色增强

img_col = ImageEnhance.Color(img)
img_col_enh = img_col.enhance(factor=1.5)  # factor is from 0 to postive infinity
display(img_col_enh)

在这里插入图片描述

c. 图像对比度增强

img_con = ImageEnhance.Contrast(img)
img_con_enh = img_con.enhance(factor=1.5)  # factor is from 0 to postive infinity
display(img_con_enh)

在这里插入图片描述

d. 图像锐度增强

img_sha = ImageEnhance.Sharpness(img)
img_sha_enh = img_sha.enhance(factor=1.5)  # factor is from 0 to 2
display(img_sha_enh)

在这里插入图片描述

5. 图像滤波

  PIL 的 ImageFilter 模块提供了多种滤波操作,如浮雕(EMBOSS)和轮廓(CONTOUR)等。

a. 图像滤波 - 浮雕

from PIL.ImageFilter import EMBOSS, CONTOUR

img_1 = img.filter(EMBOSS)
display(img_1)

在这里插入图片描述

b. 图像滤波 - 轮廓

img_2 = img.filter(CONTOUR)
display(img_2)

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智慧法院 | RPA+AI打造智慧执行助手,解决“案多人少”现实难题

为深化政法智能化建设,加强“智慧治理”“智慧法院”“智慧检务”“智慧警务”“智慧司法”等信息平台建设,深入实施大数据战略,实现科技创新成果同政法工作深度融合。法制日报社于今年3月继续举办了2023政法智能化建设创新案例及论文征集宣传…

在游戏开发中,实时渲染和离线渲染对于游戏平衡的影响有哪些?

实时渲染和离线渲染对游戏平衡有那些影响呢?在游戏开发中,渲染方式的选择对游戏的整体表现和玩家体验有着至关重要的作用。那么,实时渲染和离线渲染究竟有哪些利弊呢? 一、实时渲染 实时渲染,顾名思义,是…

新的预测模型的局部评价指标-pAUROCc

新的预测模型的局部评价指标-pAUROCc Background 局部评价主要是用在不平衡数据上,其合理性:1.局部评价比全局评价敏感,更容易区分模型的优劣;2.临床决策曲线(DCA)可知,模型使用过程中&#x…

【Spring集成MyBatis】MyBatis的Dao层实现(基于配置,非注解开发)

文章目录 1. MyBatis的dao层实现(传统方式)——需要写接口及其实现类2. MyBatis的代理开发方式——仅需写接口 1. MyBatis的dao层实现(传统方式)——需要写接口及其实现类 传统方式就是在项目下边建立dao包,里面包含接口及其实现类,文件结构如下&#x…

3D人脸扫描设备助力企业家数字人复刻,打破商业边界

京都薇薇推出数字人VN,以京都薇薇董事长为原型制作,赋能品牌直播、短片宣传、线上面诊等活动,进一步增强消费者对品牌的交互体验,把元宇宙与品牌相融合,推动品牌线上服务与线下服务实现数字一体化,打造一个…

Linux宝塔面板搭建Discuz论坛, 并内网穿透实现公网访问

Linux宝塔面板搭建Discuz论坛, 并内网穿透实现公网访问 文章目录 Linux宝塔面板搭建Discuz论坛, 并内网穿透实现公网访问前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 📷 江池…

基于C#实现线段树

一、线段树 线段树又称"区间树”,在每个节点上保存一个区间,当然区间的划分采用折半的思想,叶子节点只保存一个值,也叫单元节点,所以最终的构造就是一个平衡的二叉树,拥有 CURD 的 O(lgN)的时间。 从…

XC3320 离线式、无电感交流输入线性稳压器 可替代KP3310 固定5V输出电压

XC3320 是一款紧凑型无电感设计的离线式线性稳压器。XC3320 可获得 5V输出电压。XC3320 是一种简单可靠的获得偏置供电的离线式电源解决方案。XC3320 集成了 650V 功率 MOSFET,启动控制电路,VDD 电压控制电路,AC 交流信号同步检测电路,低压差稳压器等。该…

电动机保护方式

3.3.1、电动机温度保护 温度保护是利用安装在电动机内部的温度继电器或变换器来实现的。当电动机达到一定温度时继电器动作,通过控制电路断开电动机的主电路。对于单相小容量电动机,可以用继电器直接断开动力电路。 根据温度传感器的不同可以分为&…

项目管理中的资源日历是什么?有什么作用

管理项目不仅需要规划和预算,还需要日程安排。 资源日历是一种显示项目经理或团队领导在特定时间内可用资源的工具。这种类型的项目日历可以显示团队成员和设备在特定时间段内的可用工作时间。 例如,如果一名员工每天工作 8 小时,而他已经在…

软件开发及交付的项目管理角色

在软件开发及交付过程中,通常会涉及不同的角色和职责,包括业务角色、技术角色和管理角色。这些角色在项目管理中发挥着不同的作用,以确保项目的成功和交付高质量的产品。 业务角色:包括产品经理、业务分析师和业务运营人员等职位…

MySQL数据库_01

Web后端开发_02 数据库介绍 什么是数据库? 数据库:DataBase(DB),是存储和管理数据的仓库 数据库管理系统:DataBase Management System (DBMS),操纵和管理数据库的大型软件。SQL:St…

APM工具skywalking部署

一 整体架构 整个架构,分成上、下、左、右四部分: 上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是&…

css渐变详解(重复性线性渐变、径向渐变、重复性径向渐变的使用)

目录 线性渐变 重复性线性渐变 径向渐变 重复性径向渐变的使用 线性渐变 线性渐变是向下、向上、向左、向右、对角方向的颜色渐变。 其语法格式为: background-image: linear-gradient(side-or-corner|angle, linear-color-stop); 参数说明如下: …

【Proteus仿真】【51单片机】篮球比赛计分器

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器,使用声光报警模块、动态数码管模块、按键模块等。 主要功能: 系统运行后,数码管显示比赛时间和AB队得分;系统还未开…

小白也看的懂的爬取视频操作

1.获取一段视频 可以直接从抖音下,也可以从b站上爬取(注意法律谢谢) 保护原创 b站的视频 直接复制网址链接到哔哩哔哩(bilibili)视频解析下载 - 保存B站视频到手机、电脑 去就好了,

QGIS之二十五两个面图层数据中选择图形完全一致的数据

效果 步骤 1、准备数据 2、按位置选择 在Qgis工具箱中搜索"按位置选择"工具 选择要素和比较要素根据实际选择 运行 3、结果

基于框架的线性回归

线性回归是机器学习中最简单和最常用的回归方法之一。它建立了自变量和因变量之间的线性关系,并通过拟合一条直线或超平面来预测和分析数据。 基于框架的线性回归是构建线性回归模型的一种常见方法,它利用现有的机器学习框架来实现线性回归模型的建立、…

40、Flink 的Apache Kafka connector(kafka source 和sink 说明及使用示例) 完整版

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

易涝积水点监测,内涝积水监测仪安装

城市内涝对人们来讲会有很多影响,比如出行需要绕远路或者家中涌入污水导致淤泥堆积,这还有可能让屋内的家具受到破坏,既影响正常生活也造成了经济损失。在街道上还可能对交通、通讯、电力等基础设施造成严重威胁。因此政府如果能实时监测路面…