608|10

92

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

《python编程快速上手》第十篇:了解python的处理图像 [复制链接]

本帖最后由 xiaolinen 于 2024-5-26 11:25 编辑

一:基础知识

        1.1,安装pillow模块

pip install pillow

        1.2,图像基础

        1.2.1,计算机中通常将图像中的颜色表示为 RGBA 值。RGBA 值是一组数字,指定顔色中的红、绿、蓝和 alpha(透明度)的值。这些值是从 0(根本没有)到 255(最高)的整数。

        1.2.2,在 Pillow 中,RGBA 值表示为四个整数值的元组。例如,红色表示为(255,0,0,255)。这种颜色中红的值为最大,没有绿和蓝,并且 alpha 值最大,这意味着它完全不透明。绿色表示为(0,255,0,255),蓝色是(0,0,255,255)。白色是各种颜色的组合,即(255,255,255,255),而黑色没有任何颜色,是(0,0,0,255)。如果颜色的 alpha 值为 0,不论RGBA 值是什么,该颜色是不可见的。毕竟,不可见的红色看起来就像不可见的黑色一样。

        1.2.3,常见颜色的名称和值,如下表示:

        1.2.4,ImageColor.getcolor()函数获取某一种颜色的值,示例如下:

"""
    图像处理
"""

from PIL import ImageColor

a = ImageColor.getcolor("red", "RGBA")

print("a =", a)

#结果如下
a = (255, 0, 0, 255)

二:图像处理方法

        2.1,基本操作方法

                2.1.1,打开和关闭图像文件;

                2.1.2,获取图像文件的宽度和高度;

                2.1.3,获取图像文件的名称;

                2.1.4,获取图像文件的类型;

                2.1.5,图像文件保存为其他类型;

        代码操作,如下:

"""
    图像处理
"""

from PIL import Image

image_path = "E:/Project/python/tiger.jpg"

# 打开图像文件
image = Image.open(image_path)

# 显示宽度和高度
width, height = image.size
print(f"width = {width}, height = {height}")

# 文件名称
file_name = image.filename
print(f"file_name = {file_name}")

# 文件类型
file_type = image.format
print(f"file_type = {file_type}")

# 保存新类型
image.save("E:/Project/python/tiger.png")

# 关闭文件
image.close()


#结果显示
width = 450, height = 300
file_name = E:\Project\python\tiger.jpg
file_type = JPEG

        2.2,裁剪图片

        代码操作,如下:

"""
    图像裁剪
"""

from PIL import Image

image_path = "E:/Project/python/tiger.jpg"

# 打开图像文件
image = Image.open(image_path)

# 定义裁剪区域的左上角和右下角坐标
left = 100
top = 100
right = 300
bottom = 300

# 裁剪图像
cropped_image = image.crop((left, top, right, bottom))

# 保存裁剪后的图像
cropped_image.save("E:/Project/python/tiger0.jpg")

# 关闭文件
image.close()

       现象如下:(左侧为原图,右侧为裁剪后)

        2.3,复制和粘贴图片

        代码操作,如下:

"""
    图像复制和粘贴
"""

from PIL import Image

image_path = "E:/Project/python/tiger.jpg"

image_path0 = "E:/Project/python/panda.jpg"

# 打开图像文件
image = Image.open(image_path)

image0 = Image.open(image_path0)

# 复制
image1 = image0.copy()

# 粘贴
position = (100, 100)  # 粘贴的位置坐标
image.paste(image1, position)

# 保存裁剪后的图像
image.save("E:/Project/python/tiger1.jpg")

# 关闭文件
image.close()

        现象如下:(左侧和右上为原图,右下为实验所得)

        2.4,调整图片大小

        代码操作,如下:

"""
    图像调整大小
"""

from PIL import Image

image_path = "E:/Project/python/tiger.jpg"

# 打开图像文件
image = Image.open(image_path)

# 定义新的宽度和高度
new_width = 200
new_height = 450

# 更改大小
image2 = image.resize((new_width, new_height))  # 宽度和高度视为一个整体

# 保存裁剪后的图像
image2.save("E:/Project/python/tiger2.jpg")

# 关闭文件
image.close()

        现象如下:(左侧为原图,右侧为更改后)

        2.5,旋转和翻转图片

        代码操作,如下:

"""
    图像旋转和翻转
"""

from PIL import Image

image_path = "E:/Project/python/tiger.jpg"

# 打开图像文件
image = Image.open(image_path)

# 旋转图像
image.rotate(90).save("E:/Project/python/tiger3.jpg")

# 翻转图像
image.transpose(Image.FLIP_LEFT_RIGHT).save("E:/Project/python/tiger4.jpg")  # 水平翻转
image.transpose(Image.FLIP_TOP_BOTTOM).save("E:/Project/python/tiger5.jpg")  # 垂直翻转

# 关闭文件
image.close()

        现象如下:(左上为原图,右上为旋转90°,左下为水平翻转,右下为垂直翻转)

        2.6,图片中添加内容

                2.6.1,添加形状

                代码操作,如下:

"""
    图像上绘画
"""

from PIL import Image, ImageDraw

image_path = "E:/Project/python/test.jpg"

# 定义图片尺寸和背景颜色
width = 400
height = 300
background_color = (0, 0, 255)  # 蓝色

# 创建新的图片对象
image = Image.new("RGB", (width, height), background_color)

# 创建绘图对象
draw = ImageDraw.Draw(image)

# 定义矩形的位置和尺寸
x1 = 100
y1 = 50
x2 = 300
y2 = 250

# 定义矩形的颜色
rectangle_color = (255, 0, 0)  # 红色

# 绘制矩形
draw.rectangle([(x1, y1), (x2, y2)], fill=rectangle_color)

# 保存图片到新文件
image.save(image_path)

                现象如下:

                2.6.2,添加文本

                代码操作,如下:

"""
    图像上添加文字
"""
from PIL import Image, ImageDraw, ImageFont

# 定义图片尺寸和背景颜色
width = 400
height = 300
background_color = (0, 0, 255)  # 蓝色

# 创建新的图片对象
image = Image.new("RGB", (width, height), background_color)

# 创建绘图对象
draw = ImageDraw.Draw(image)

# 定义文字内容和颜色
text = "hello python!"
text_color = (255, 255, 255)  # 白色

# 定义文字字体和大小
font = ImageFont.truetype("arial.ttf", 30)  # 使用Arial字体,大小为30

# 绘制文字
draw.text((20, 150), text, font=font, fill=text_color)

# 保存图片到新文件
image_path = "E:/Project/python/test.jpg"
image.save(image_path)

                现象如下:

 

最新回复

linux windows下的效果一样吗?   详情 回复 发表于 2024-5-27 18:08
点赞 关注
 
 

回复
举报

552

帖子

3

TA的资源

纯净的硅(初级)

沙发
 

速度挺快的呀,都到最后了,图像处理了

点评

先学习自己工作中可能用到的部分  详情 回复 发表于 2024-5-26 21:24
 
 
 

回复

6481

帖子

9

TA的资源

版主

板凳
 

这就基本上这个书已经学完了  

点评

是的,已经学到后半部分了,受益匪浅  详情 回复 发表于 2024-5-26 21:23
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(高级)

4
 
秦天qintian0303 发表于 2024-5-26 20:57 这就基本上这个书已经学完了  

是的,已经学到后半部分了,受益匪浅

点评

恭喜恭喜,终于要到结束部分了。。。。。看来确实受益匪浅 关键是看帖子的我,也受益匪浅呢,感谢分享!  详情 回复 发表于 2024-5-27 14:04
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(高级)

5
 
xinmeng_wit 发表于 2024-5-26 19:31 速度挺快的呀,都到最后了,图像处理了

先学习自己工作中可能用到的部分

点评

学习的目的就是要用,学以致用     详情 回复 发表于 2024-5-27 08:47
 
 
 

回复

6481

帖子

9

TA的资源

版主

6
 
xiaolinen 发表于 2024-5-26 21:24 先学习自己工作中可能用到的部分

学习的目的就是要用,学以致用   

点评

没毛病  详情 回复 发表于 2024-5-27 09:52
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(高级)

7
 
秦天qintian0303 发表于 2024-5-27 08:47 学习的目的就是要用,学以致用   

没毛病


 
 
 

回复

1380

帖子

1

TA的资源

五彩晶圆(初级)

8
 
xiaolinen 发表于 2024-5-26 21:23 是的,已经学到后半部分了,受益匪浅

恭喜恭喜,终于要到结束部分了。。。。。看来确实受益匪浅

关键是看帖子的我,也受益匪浅呢,感谢分享!

点评

一起学习,共同进步  详情 回复 发表于 2024-5-27 14:09
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(高级)

9
 
hellokitty_bean 发表于 2024-5-27 14:04 恭喜恭喜,终于要到结束部分了。。。。。看来确实受益匪浅 关键是看帖子的我,也受益匪浅呢,感谢分享 ...

一起学习,共同进步

 
 
 

回复

308

帖子

0

TA的资源

纯净的硅(初级)

10
 

linux windows下的效果一样吗?

点评

抱歉,我的开发环境只是Windows,没试linux环境下  详情 回复 发表于 2024-5-27 18:42
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(高级)

11
 
13620203064 发表于 2024-5-27 18:08 linux windows下的效果一样吗?

抱歉,我的开发环境只是Windows,没试linux环境下

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表