首页IT科技python图像处理教程(【Python】– python的基本图像处理(图像显示、保存、颜色变换、缩放与旋转等))

python图像处理教程(【Python】– python的基本图像处理(图像显示、保存、颜色变换、缩放与旋转等))

时间2025-06-15 23:56:11分类IT科技浏览4531
导读:目录...

目录

一              、图像文件的读写

 操作步骤:

显示图像文件的三个常用属性:

例:

二                      、图像文件的处理

常用的图像处理方法

1       、图像的显示

2              、图像的保存

 3                      、图像的拷贝与粘贴

 4       、图像的缩放与旋转

 5       、图像的颜色变换

 6                      、图像的过滤与增强

7               、序列图像处理

在Python中               ,处理图像       、网页等二进制文件时主要借助一些第三方库来解析:

PIL:最常用的图像处理第三方库 request:通过网络连接下载网页的第三方库 beautifulsoup4:解析网页格式                     、获取数据的第三方库

一               、图像文件的读写

PIL库包括21个类                     ,其中Image类是PIL库中一个非常重要的类       ,Image类提供了多种方法可以进行图像文件的读写和处理        ,要想使用这些方法                     ,需要从PIL库导入Image模块              。

from PIL import Image

 操作步骤:

首先打开文件              ,创建图像文件对象        ,然后进行处理                      ,处理完毕后关闭文件                      。

使用image类的open方法载入图像文件              ,载入失败提示IOError,载入成功返回Image对象       。

Image.open()

显示图像文件的三个常用属性:

format:识别图像格式或来源                      ,如果图像不是从文件中读取的                     ,返回None size:图像的宽度和高度(单位为像素),返回二元组(宽度               ,高度) mode:图像的颜色模式                     ,L代表灰度图像、RGB代表真彩色图像       ,CMYK代表印刷图像

例:

from PIL import image im=Image.open(d:\\Python\\1.jpg) print(im.format,im.size,im.mode)

二                     、图像文件的处理

打开图像文件后               ,可调用Image类的各种方法或其他模块进行处理              。

常用的图像处理方法

图像显示 show() 图像保存 sava() 图像的拷贝与粘贴 crop(box)                      、paste(region,box) 图像的缩放与旋转 rotate(angle)、transpose() 图像的颜色变换 split()              、merge()                      、convert() 图像的过滤与增强 PIL库中的ImageFilter模块       、ImageEnhance模块 序列图像处理 seek()              、tell()

1                      、图像的显示

show()用于显示图像                      。

例:

from PIL import Image # 图像的显示 im=Image.open(csdn.webp) im.show()

2       、图像的保存

 sava()用于保存图像                     ,有两个参数:文件名filename和图像格式format;

如果调用时不指定保存格式       ,将自动根据图像文件的扩展名保存图像;

如果指定格式        ,则按照格式存储;

sava()可以实现图像格式的转换                     ,例如:将csdn.jpg保存为png格式文件

例:

"""图像的保存""" from PIL import Image im=Image.open(csdn.webp) im.save(csdn.jpg)

 3       、图像的拷贝与粘贴

crop(box)从图像中拷贝一个矩形图像       。参数box是一个四元元组              ,四元素分别代表矩形左上角和右下角顶点的横纵坐标       。坐标系统原点(0, 0)为图片左上角                      。paste(region, box)将一个图像粘贴到另一个图像上               。region指被粘贴图像对象        ,变量box指定粘贴区域                      ,如果是二元元组              ,代表粘贴区域左上角的横纵坐标;如果是四元元组,则代表左上和右下角的横纵坐标       。如果为空                      ,则默认为(0, 0)                     。如果给定四元元组                     ,被粘贴图像的尺寸必须与粘贴区域尺寸一样               。如果尺寸不匹配,被粘贴的图像将被转换为当前图像的模式。

例:

"""图像的拷贝与粘贴""" from PIL import Image im=Image.open(csdn.jpg) #定义拷贝区域 box=(100,20,281,202) #拷贝图像               ,返回新的图像对象 region=im.crop(box) region.show() #将图像region粘贴到图像im左上角 im.paste(region,(0,0)) #将剪裁下来的图像粘贴到原始图像上 im.save(new.jpg) im1=Image.open(new.jpg) im1.show()

剪裁的图片:

将剪裁的图片放到原图的左上角:

 4                      、图像的缩放与旋转

resize(size)根据参数size指定的尺寸调整图像                     ,生成一个副本文件                     。rotate(angle)按照参数angle指定的角度逆时针旋转图像       ,生成一个副本文件                      。transpose()方法预定义了一些旋转方式               ,如左右反转                     ,上下翻转       ,逆时针旋转(90               、180       、270)。

例:

"""图像的缩放与旋转""" from PIL import Image im=Image.open(csdn.jpg) #缩小尺寸 im.resize((200,100)) #逆时针旋转45° out=im.rotate(45) out.show() # 左右反转 out=im.transpose(Image.Transpose.FLIP_LEFT_RIGHT) out.show() #上下反转 out=im.transpose(Image.Transpose.FLIP_TOP_BOTTOM) out.show() # 逆时针旋转90° out=im.transpose(Image.Transpose.ROTATE_90) out.show()

 5                     、图像的颜色变换

图像有不同颜色模式              。在RGB模式下        ,每张图片由三个颜色通道R               、G、B叠加而成                      。可以使用split()分离三个颜色通道                     ,对每种颜色分别处理              ,再用merge()把几个通道合并形成新的图像       。还可以使用convert()将图像转换为不同的颜色模式参数              。

 例:

"""图像的颜色变换""" from PIL import Image im=Image.open(csdn.jpg) #分离三个颜色通道 r,g,b=im.split() # 更换r                     、g                      、b颜色后合成新图像 im=Image.merge(RGB,(b,r,g)) im.show()

 6、图像的过滤与增强

PIL中的ImageFilter模块和ImageEnhance模块提供了过滤图像和增强图像的方法                      。ImageFilter模块预定义了10种图像过滤方法        ,可以提取图像轮廓              、图像锐化                      、图像平滑等                      ,主要使用 filter()方法实现       。ImageEnhance模块专门用于图像的增强处理              ,可以增强(或减弱)图像的亮度       、对比度              、色度

例:

"""图像的过滤与增强""" from PIL import Image from PIL import ImageFilter from PIL import ImageEnhance im=Image.open(csdn.jpg) detfilter=im.filter(ImageFilter.DETAIL)#图像细节增强 detfilter.show() confilter=im.filter(ImageFilter.CONTOUR)#图像轮廓效果 confilter.show() smtfilter=im.filter(ImageFilter.SMOOTH)#图像平滑 smtfilter.show() sharpfilter=im.filter(ImageFilter.SHARPEN)#图像锐化 sharpfilter.show() enhbrightim=ImageEnhance.Brightness(im) brightness=5 eng_bri=enhbrightim.enhance(brightness)#图像亮度增强为原来的1.5倍 eng_bri.show() enhbrightim=ImageEnhance.Contrast(im) contrast=5 enh_con=enhbrightim.enhance(contrast)#图像对比度增强为原1.5倍 enh_con.show()

分别为细节增强                      、轮廓效果       、平滑       、锐化                      、亮度增强               、对比度增强

PIL还支持对像素点的直接操作       。例如将ai.jpg分离成三个颜色通道,对其中一个通道进行加强或减弱操作                      ,再使用Merge将通道合并                     ,从而改变图片的色调(冷暖色调的互换)等                      。如其中b层每个像素点的亮度增大20%

im=Image.open(csdn.jpg) r,g,b=im.split() out=b.point(lambda i:i*1.2) im=Image.merge(RGB,(r,g,b)) im.show()

7       、序列图像处理

序列图像是将多帧图像保存在一个图像文件中,按照一定时间间隔播放形成动画效果               。gif图片就是序列图像       。PIL对这种动态图片也提供了基本的处理方法                     。当用open()打开这类图像文件时               ,会自动载入第一帧图像                     ,使用 seek()tell()方法可以在各帧之间移动               。seek(frame)表示跳转到指定的图像帧       ,tell()返回当前帧的序号

 例:

代码采用了try-except结构               ,首先执行try中的语句                     ,当图像已经跳转到最后一副图像帧时       ,再次跳转(im.tell()+1)会出现异常        ,此时执行except后面的语句                     ,程序结束。

"""图像的序列操作""" from PIL import Image # 读入gif文件 im=Image.open(pai.gif) try: im.save(frame{:02d}.png.format(im.tell())) # 保存图像帧为png文件 while True: # 跳转到下一帧图像 im.seek(im.tell()+1) im.save(frame{:02d}.png.format(im.tell())) except: print(处理结束)

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
游戏赚钱平台玩游戏赚钱排行榜(赚钱的游戏平台有哪些-游戏推广陷阱大比拼,不但没赚到钱,还被骗) 鱼和熊掌可兼得的名言(鱼与熊掌兼得的Sapper框架)