广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python使用Pillow实现图像基本变化
  • 223
分享到

Python使用Pillow实现图像基本变化

2024-04-02 19:04:59 223人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录一、图像处理1. 灰度图像2. 二值图像3. 索引图像4. RGB彩色图像5. 图像存储方式二、图像处理基础操作1.查看图片属性2. 显示RGB不同通道3.PGB和HSV的转换三

一、图像处理

1. 灰度图像

灰度图像矩阵元素的取值范围通常为 [0,255] 。因此其数据类型一般为8位无符号整数的(int8),这就是人们经常提到的256灰度图像。“0”表示纯黑色,“255”表示纯白色,中间的数字从小到大表示由黑到白的过渡色。在某些软件中,灰度图像也可以用双精度数据类型(double)表示,像素的值域为[0,1],0代表黑色,1代表白色,0到1之间的小数表示不同的灰度等级。二值图像可以看成是灰度图像的一个特例。

2. 二值图像

一幅二值图像的二维矩阵仅由0、1两个值构成,“0”代表黑色,“1”代白色。由于每一像素(矩阵中每一元素)取值仅有0、1两种可能,所以计算机中二值图像的数据类型通常为1个二进制位。二值图像通常用于文字、线条图的扫描识别(OCR)和掩膜图像的存储。

3. 索引图像

索引图像的文件结构比较复杂,除了存放图像的二维矩阵外,还包括一个称之为颜色索引矩阵MAP的二维数组。MAP的大小由存放图像的矩阵元素值域决定,如矩阵元素值域为[0,255],则MAP矩阵的大小为256x3,用MAP=[RGB]表示。MAP中每一行的三个元素分别指定该行对应颜色的红、绿、蓝单色值,MAP中每一行对应图像矩阵像素的一个灰度值,如某一像素的灰度值为64,则该像素就与MAP中的第64行建立了映射关系,该像素在屏幕上的实际颜色由第64行的[RGB]组合决定。也就是说,图像在屏幕上显示时,每一像素的颜色由存放在矩阵中该像素的灰度值作为索引通过检索颜色索引矩阵MAP得到。索引图像的数据类型一般为8位无符号整形(int8),相应索引矩阵MAP的大小为256x3,因此一般索引图像只能同时显示256种颜色,但通过改变索引矩阵,颜色的类型可以调整。索引图像的数据类型也可采用双精度浮点型(double)。索引图像一般用于存放色彩要求比较简单的图像,如windows中色彩构成比较简单的壁纸多采用索引图像存放,如果图像的色彩比较复杂,就要用到RGB真彩色图像。

4. RGB彩色图像

RGB图像与索引图像一样都可以用来表示彩色图像。与索引图像一样,它分别用红(R)、绿(G)、蓝(B)三原色的组合来表示每个像素的颜色。但与索引图像不同的是,RGB图像每一个像素的颜色值(由RGB三原色表示)直接存放在图像矩阵中,由于每一像素的颜色需由R、G、B三个分量来表示,M、N分别表示图像的行列数,三个M x N的二维矩阵分别表示各个像素的R、G、B三个颜色分量。RGB图像的数据类型一般为8位无符号整形,通常用于表示和存放真彩色图像,当然也可以存放灰度图像。

5. 图像存储方式

数字化图像数据有两种存储方式:位图存储(Bitmap)和矢量存储(Vector)

我们平常是以图像分辨率(即像素点)和颜色数来描述数字图象的。

例如:一个800*600的图像大小为:

彩色RGB:(800*600*3)/1024/1024=1.3733MB

灰度:1.373/3=0.46MB

二值图:0.46/8=0.057MB

二、图像处理基础操作

1.查看图片属性

from skimage import io
#导入io模块,以读取目标路径下的图片
img = io.imread( ' ./tupian.jpg ')#读取tupian.jpg文件
print(type(img ))
#显示类型
print( img .shape)
#显示尺寸
print(img. shape[0])#显示高度print( img . shape[1])#显示宽度
print( img . shape[2])#显示图片通道数print( img.size)
#显示总像素数
print(img .max( ) )
#显示最大像素值
print(img .min( ) )
#显示最小像素值
print(img.mean( ))
#像素平均值
print( img[e][0])
#指定像素点的像素值
io.imshow( img)
#io模块下显示图像
io.show( )
#显示图像

2. 显示RGB不同通道

img_r=image[:,, :,o]
img_g=imagel:,:,1]
img_b=image[:,:,2]
plt.subplot(2,2,1)
io.imshow(image)
plt.subplot(2,2,2)
io.imshow(img_r)
plt.subplot(2,2,3)
io.imshow(img_g)
plt.subplot(2,2,4)
io.imshow(img_b)
plt.show()

3.PGB和HSV的转换

#RGB→HSV
max=max(R,G,B);
min=min(R,G,B);
V=max(R,G,B);
S=(max-min)/max;
if (R = max) H =(G-B)/(max-min)* 60;
if (G = max) H = 120+(B-R)/(max-min)* 60;
if (B = max) H = 240 +(R-G)/(max-min)* 60;
if (H < 0) H = H+ 360;
#HSV→RGB
if (s = 0)
	R=G=B=V;
else
	H /= 60;
	i = INTEGER(H);
	f = H - i;
	a = V * ( 1 - s );
	b = V * ( 1 - s * f );
	c = V * ( 1 - s * (1 - f ) );
switch(i)
	case 0: R = V; G = c; B = a;
	case 1: R = b; G = v; B = a;
	case 2: R = a; G = v; B = c;
	case 3: R = a; G = b; B = v;
	case 4: R = c; G = a; B = v;
	case 5: R = v; G = a; B = b;

三、实例

1.导入第三方库

from PIL import  Image
from matplotlib import pyplot as plt
from PIL import ImageFilter
from PIL import ImageEnhance

安装第三方库的方法:

pip install xxx

2.修改显示的图像大小的方法

print("默认图片大小是 ", plt.rcParams["figure.figsize"])
plt.rcParams["figure.figsize"] = (20, 10)
print("修改后默认图片大小是", plt.rcParams["figure.figsize"])

3.打开一张图片

img=Image.open(r'C:\Users\20415\Desktop\03.png')
plt.imshow(img)
plt.show()

4.转换为灰阶图像

#去色处理
img_L=Image.open(r'C:\Users\20415\Desktop\03.png').convert("L")
plt.imshow(img_L)
plt.show()

5.对图像进行增强处理

#图像增强处理
out = img.filter(ImageFilter.DETaiL)
plt.subplot(121),plt.imshow(img),plt.title("befor")
plt.subplot(122),plt.imshow(out),plt.title("after")
plt.imshow(out)
plt.show()

6.提高图像清晰度

#将清晰度提高10倍
img_0=Image.open(r'C:\Users\20415\Desktop\03.png')
shp=ImageEnhance.Sharpness(img_0)
img_0_shp=shp.enhance(10)
plt.subplot(121),plt.imshow(img_0),plt.title("befor")
plt.subplot(122),plt.imshow(img_0_shp),plt.title("after")
plt.show()

7.提高图像对比度

#将对比度提高1.8倍
img_0=Image.open(r'C:\Users\20415\Desktop\03.png')
enh = ImageEnhance.Contrast(img_0)
img_0_cont=enh.enhance(1.8)
plt.subplot(121),plt.imshow(img_0),plt.title("befor")
plt.subplot(122),plt.imshow(img_0_cont),plt.title("after")
plt.show()

8.提高图像色彩饱和度

#将色彩饱和度提高1.8倍
img_1=Image.open(r'C:\Users\20415\Desktop\03.png')
color=ImageEnhance.Color(img_1)
img_1_cont=color.enhance(1.8)
plt.subplot(121),plt.imshow(img_1),plt.title("befor")
plt.subplot(122),plt.imshow(img_1_cont),plt.title("after")
plt.show()

9.提高图像亮度

#亮度
img2=Image.open(r'C:\Users\20415\Desktop\03.png')
brg=ImageEnhance.Brightness(img2)
img2_brg=brg.enhance(1.1)
plt.subplot(121),plt.imshow(img2),plt.title("befor")
plt.subplot(122),plt.imshow(img2_brg),plt.title("after")
plt.show()

pillow官网

Pillow (PIL Fork) 9.2.0 documentation

以上就是python使用Pillow实现图像基本变化的详细内容,更多关于Python Pillow图像变化的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python使用Pillow实现图像基本变化

本文链接: https://www.lsjlt.com/news/120804.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python使用Pillow实现图像基本变化
    目录一、图像处理1. 灰度图像2. 二值图像3. 索引图像4. RGB彩色图像5. 图像存储方式二、图像处理基础操作1.查看图片属性2. 显示RGB不同通道3.PGB和HSV的转换三...
    99+
    2022-11-11
  • Python编程中使用Pillow来处理图像的基础教程
    安装 刚接触Pillow的朋友先来看一下Pillow的安装方法,在这里我们以Mac OS环境为例: (1)、使用 pip 安装 Python 库。pip 是 Python 的包管理工具,安装后就可以直接在命...
    99+
    2022-06-04
    基础教程 图像 Python
  • 基于Python实现图像的傅里叶变换
    目录前言(1)基本概念(2)读取图像信息1. 傅里叶变换(1)基本概念(2)numpy实现(3)OpevCV实现 2. 傅里叶逆变换(1)基本概念(2)代码实现前言 首先是本文总体代...
    99+
    2022-11-12
  • 浅谈Python Pygame图像的基本使用
    笛卡尔坐标系 游戏离不开坐标,我们来康康pygame中坐标是如何设立的吧~ 窗口左上角坐标(0,0),横轴正向向右,纵轴正向向下 实际效果 碰到边框就返回(其实是小球碰撞实验,我不爱用正经的小球,所以…) 代码 ...
    99+
    2022-06-02
    Pygame图像的基本使用 python pygame
  • 基于python使用Pillow做动态图在图中生成二维码以及图像处理
    目录1.什么是Pillow2.pillow图像处理的简单使用图片信息显示修改图片尺寸裁剪旋转图片为图片添加水印生成gif图片1.什么是Pillow 首先我们需要了解一下PIL(Pyt...
    99+
    2022-11-13
  • Python+OpenCV实现基本的图像处理操作
    目录模块的安装图片的各种操作读取图像展示图像图片保存图片的各种属性图像的基本操作今天小编来和大家分享一下Python在图像处理当中的具体应用,那既然是图像处理,那必然要提到openc...
    99+
    2022-11-11
  • 如何基于Python实现图像的傅里叶变换
    这篇文章主要介绍了如何基于Python实现图像的傅里叶变换,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言首先是本文总体代码,改一下图像的读取路径就可以运行了,但我还是建议...
    99+
    2023-06-22
  • 详解Qt使用QImage类实现图像基本操作
    目录一、项目介绍二、项目基本配置三、UI界面设计四、主程序实现4.1 widget.h头文件4.2 widget.cpp源文件五、效果演示一、项目介绍 利用QImage类实现对图像的...
    99+
    2022-11-13
  • Python+OpenCV实现图像基本操作的示例详解
    目录1. 计算机眼中的图像2. 图像的表示3. 基础操作 图像的读取4. 截取部分图像数据(ROI)5. 视频的读取6. 边界填充7. 图像的加法 图像的加法1. 计算机眼中的图像 ...
    99+
    2023-05-16
    Python OpenCV图像基本操作 Python OpenCV图像操作 Python OpenCV图像 Python OpenCV
  • 图像噪声、去噪基本方法合集(Python实现)
    文章目录 前言本文主要参考冈萨雷斯的数字图像处理 (第4版),介绍图片中一些常见的噪声形式和常用的去噪方法,并且给出相应滤波方法的实现代码。 一、噪声分类1、高斯噪声2、泊松噪声3、椒盐噪...
    99+
    2023-09-01
    python opencv 计算机视觉 图像处理
  • 基于Python利用Pygame实现翻转图像
    目录前言:1、垂直翻转图像2、水平方向翻转图像前言: 要翻转图像,我们需要使用pygame.transform.flip(Surface, xbool, ybool) 方法,该方法被...
    99+
    2022-11-13
  • Python使用KerasOCR实现从图像中删除文本
    目录介绍处理实现Keras ocr简介cv2修复函数汇总结尾介绍 本文将讨论如何快速地从图像中删除文本,作为图像分类器的预处理步骤。 删除文本可能有多种或多种原因,例如,我们可以使用...
    99+
    2022-11-13
  • 利用Python实现图像的二值化
       目录 1、全局阈值法 1.1主要函数: 1.2全局阈值的代码实现 1.3特点 2、自适应阈值法 2.1主要函数: 2.2实现代码: 2.3特点: 3、OTSU二值化(最大类间方差法) 3.1实现代码: 3.2特点 4、实例展示 参考文...
    99+
    2023-09-17
    python 计算机视觉 开发语言
  • 使用Python实现图像颜色量化的方法
    目录一、选择图片二、创建脚本1、导入相关库2、创建方法三、完整代码一、选择图片 从选择图像开始。 例如,我将使用下面的海水和椰子树的照片。 二、创建脚本 1、导入相关库 接下来,让...
    99+
    2022-11-11
  • 如何使用Python实现图像识别?
            在当今的数字化时代,图像识别技术已经成为了人工智能领域中的一个热门话题。图像识别技术可以将数字图像转换为可供计算机程序理解的数据,并对图像内容进行分析和处理。Python是目前最受欢迎的编程语言之一,也是图像识别技术中最常用...
    99+
    2023-09-01
    python
  • 使用pythonopencv对畸变图像进行矫正的实现
    代码: __Author__ = "Shliang" __Email__ = "shliang0603@gmail.com" import os import cv2 import...
    99+
    2022-11-11
  • python使用socket实现图像传输功能
    在python中使用socket进行linux服务器与win10主机间的图像传输,供大家参考,具体内容如下 前提:服务器与主机需要在同一局域网内 使用方法: (1)分别将下面两段代码存入对应位置 (2)先运行服务器端...
    99+
    2022-06-02
    python socket 图像传输
  • Python可视化Dash工具之plotly基本图形的实现示例
    小编给大家分享一下Python可视化Dash工具之plotly基本图形的实现示例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Plotly Express是对 Plotly.py 的高级封装,内置了大量实用、现代的绘图模板...
    99+
    2023-06-14
  • 如何使用CSS3实现11种基本图形
    这篇文章主要介绍如何使用CSS3实现11种基本图形,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!   CSS3圆角   #css3-circle{   width:150px;...
    99+
    2022-10-19
  • SQLServer2019 数据库的基本使用之图形化界面操作的实现
    目录一、数据库、表的创建与删除1. 创建数据库2. 修改数据库3. 删除数据库4. 创建数据表5. 删除数据表二、数据表常见操作1. 在表结构中添加新字段2. 在表结构中删除字段3....
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作