0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于python中非常实用的一个图像处理库 1

jf_78858299 来源:算法美食屋 作者:梁云1991 2023-02-08 17:18 次阅读

PIL:Python Imaging Library,是Python环境下最受欢迎的图像处理库,木有之一。然而,在Python2.7之后不再支持。

好在又有了pillow!它派生于PIL,支持Python3,简单优雅而功能强大,是图像相关机器学习任务中算法工程师的亲密合作伙伴。

下面我们将介绍pillow的16个图片处理功能:

1, 图片读写

2, 图片与array互转

3, 图片与string互转

4, 图片由彩色转灰度

5, 图片通道分离与合并

6, 调整图片尺寸

7, 截取图片部分区域

8, 图片旋转

9, 图片翻转

10, 提取图片边缘

11, 图片高斯模糊

12, 在图片上绘制文字

13, 在图片上绘制直线

14, 在图片上绘制矩形

15, 在图片上绘制椭圆

16, 在图片上粘贴其他图片

〇,安装

安装pillow非常简单。

pip install pillow

一,图片读写

import numpy as np 
from PIL import Image,ImageFilter,ImageDraw,ImageFont
# 读取图片
img = Image.open("./data/猫咪图片.jpg")
print(img.format, img.size, img.mode)
print(img.info)
img
JPEG (641, 641) RGB
{'jfif': 257, 'jfif_version': (1, 1), 'dpi': (72, 72), 'jfif_unit': 1, 'jfif_density': (72, 72)}

保存图片

img.save("./data/猫咪图片.png")

## 二,图片与array互转

Image转np.array

img = Image.open("./data/猫咪图片.jpg")

arr = np.array(img)

print(arr.shape)

print(arr.dtype)


(641, 641, 3)

uint8


np.array转Image

arr = (np.ones((256,256))*np.arange(0,256)).astype(np.uint8)

img = Image.fromarray(arr)

img

![图片](https://mmbiz.qpic.cn/mmbiz_png/4WgILHBwVHibuic4uM4wdMZ6sEA6Hs2B0eJ7Tq6y9TsNCNXAmlEavy1jsvgGbfcVGMNCkRR9VymibiaUHAfk6rF2FQ/640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1)

## 三,图片与string互转

Image转string

import base64

from io import BytesIO

img = Image.open("./data/猫咪图片.jpg")

buffer = BytesIO()

img.save(buffer, 'PNG')

b = buffer.getvalue()

s = base64.b64encode(b).decode("utf-8")

print(s[0:1000])

iVBORw0KGgoAAAANSUhEUgAAAoEAAAKBCAIAAACnMebvAAEAAElEQVR4nOz96bMtSXIfiLl7ROR2lru+raqrqxsEQBAkRuKMRHI0kj6OSTLJ9M+KRumTTJwxyWZGJm6DIQguAHqp7lree3c5S2ZGhLs+eIbfOOe+V13dKGxjCHt27b5z82RGRnj4z3fHT69fJB3CiEhEDCIi5H1KKQt775umEYRpmsZx/PGnn3Vd94tf/OLu7u7y8lJExnG8uro6Ho/ee+ccMwNA13UXFxebzeZnP/uZcw4R53k+Ho/TNIkIIiIiMxMREaWUcs6bzebm5mae5/1+H2NsmiaEkHOe55mZvfcAkFKa5xkA9OL1er3ebv/oj/7IOSciOUbv/cPDAwr0fb/uh5ubmxDCeDgi4vF4/NnPfjYHBAAsQ38HgJxzSklEiAgARKRt22EYmqaZpul4PM7zbDMXEfgbMnSqurP2EwDGcaz/axf/DXq1aZq6rgMAEfmd3/mdm5ubn/3sZz//+c9TSgCgJCEiIYS+7+d5nqYp5+y9R8Scs4g45z5287NdtrUaOdknKICIZNfI8tOWlABczuv1uuu6lNI0TXo6mFkncHZ/AEhxdM7ps5TenHPOuZTSarXquo6Z7eAw80wZAHJMMUZP5L3PMY2Ho3Nuu1oPfS8iHJOIcMoxRiYnIjlnvQ8UCsk5O+dCCCEEXRb9PMWdnt+cc4wx50xEeuXxeBSRYRj6vnfO6XmJhwcqQ99UxzAMIqK/1y8ukpUVzPOsR7tt26ZphmGwZdEn6jQaDHoHRBTCnPM4juM89X2/Px6dcxcXF74JMcYQwna7TeCULyknSSkhovfezoWus1F+hFnXvGmapml0bjlnKIxCr0TEEIL3fjelpml0xexk7ff74/GoX1TmZqv9W3/3d66vr5l5HMfNsOr7npkJMMYoOSsnzjEpt5znOca42+2Ucg6HwzzPV1dXn3766YsXL0IIXdc1TQMA8zyP4xhj
# string转Image 

b = base64.b64decode(s.encode("utf-8")) 
buffer = BytesIO(b) 
img = Image.open(buffer)
img

四,图片由彩色转灰度

# 转成灰度
img = Image.open("./data/猫咪图片.jpg")
img.convert("L")

五,图片通道分离与合并

# 分离通道
img = Image.open("./data/猫咪图片.jpg")
r,g,b = img.split() 
b
# 合并通道
Image.merge(mode = "RGBA", bands = [r,g,b,r])

六, 调整图片尺寸

# 调整大小
img = Image.open("./data/猫咪图片.jpg")
print(img.size)
img_resized = img.resize((300,300))
print(img_resized.size)
img_resized
(641, 641)
(300, 300)

七, 截取图片部分区域

img = Image.open("./data/猫咪图片.jpg")
img_croped = img.crop(box = [78,24,455,320]) 
print(img_croped.size)
img_croped
(377, 296)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像处理
    +关注

    关注

    26

    文章

    1226

    浏览量

    55843
  • 机器学习
    +关注

    关注

    66

    文章

    8134

    浏览量

    130580
  • python
    +关注

    关注

    51

    文章

    4678

    浏览量

    83476
收藏 人收藏

    评论

    相关推荐

    常用的Python图像处理库介绍

    本文主要介绍了一些简单易懂最常用的 Python 图像处理库。
    的头像 发表于 08-19 10:54 1674次阅读

    在做一个关于图像处理的程序怎样实现实时处理和实时显示

    在做一个关于labview的图像处理的程序,现在想要解决的问题是想在
    发表于 05-20 09:47

    2017年10大Python总结

    目的,需要精通Javascript的专职前端团队来搭建GUI,以后就用不着啦。今年发布的Dash是在纯Python环境中构建数据可视化Web APP的开源。该
    发表于 01-23 14:48

    python数据分析的类

    ,因为它太重要了.Pandas提供了我们很多函数,能够快速的方便的,处理结构化的大型数据,不夸张的说,Pandas是让Python成为强大的数据分析工具的非常重要的
    发表于 05-10 15:18

    常用python机器学习盘点

    现在人工智能非常火爆,机器学习应该算是人工智能里面的子领域,而其中有块是对文本进行分析,对数据进行深入的挖掘提取些特征值,然后用
    发表于 05-10 15:20

    Python爬虫与Web开发盘点

    Python爬虫和Web开发均是与网页相关的知识技能,无论是自己搭建的网站还是爬虫爬去别人的网站,都离不开相应的Python,以下是常用的Python爬虫与Web开发
    发表于 05-10 15:21

    Python图像处理图像腐蚀与图像膨胀

    。(2) 对腐蚀过的图像,进行膨胀处理,可以去除噪声,并且保持原有形状。 它也包括两输入对象:(1)二值图像或原始
    发表于 11-23 16:39

    【建议收藏】Python大全

    照相机、图像处理、特征提取、格式转换的简介,可读性强的接口(基于OpenCV)。1.DjangoFlask是轻量级的Web应用框架,使用
    发表于 09-06 15:58

    关于Python编程入门系列教程》说明及教程汇总

    ◆ 桌面界面开发 ◆ 软件开发 ◆ 后端开发 ◆ 网络爬虫从整体上看,Python 语言最大的特点就是简单,该特点主要体现在以下 2 方面:1Python语言的语法
    发表于 06-23 10:10

    Python基础-图像处理工具包

    增强,直方图处理,插值和滤波等 等。虽然在这个软件包上要实现类似MATLAB中的复杂的图像处理算法并不太适合,但是Python的快速开发能力以及面向对象等等诸多特点使得它
    发表于 03-30 14:09 17次下载

    Python图像处理库Pillow入门教程和代码资料免费下载

    Pillow 是Python 里的图像处理库(PIL:Python Image Library),提供了了广泛的文件格式支持,强大的图像
    发表于 01-11 16:20 30次下载
    <b class='flag-5'>Python</b><b class='flag-5'>图像</b><b class='flag-5'>处理</b>库Pillow入门教程和代码资料免费下载

    Python教程之如何使用使用PIL库做图像处理的资料说明

    图像处理是一门应用非常广的技术,而拥有非常丰富第三方扩展库的 Python 当然不会错过这一门盛宴。PIL (
    发表于 01-18 17:01 15次下载
    <b class='flag-5'>Python</b>教程之如何使用使用PIL库做<b class='flag-5'>图像</b><b class='flag-5'>处理</b>的资料说明

    如何使用Python和Numpy等技术实现图像处理

    本文档的主要内容详细介绍的是如何使用Python、Numpy、Scipy和matplotlib执行图像处理任务。
    发表于 08-28 09:36 8次下载
    如何使用<b class='flag-5'>Python</b>和Numpy等技术实现<b class='flag-5'>图像</b><b class='flag-5'>处理</b>

    分享5个用于图像处理Python

    提取特征。 在今天的文章中,我们将介绍5个最好的Python库,它们可能会帮助你执行图像处理,如裁剪、缩放等。
    的头像 发表于 02-08 16:23 1069次阅读
    分享5个用于<b class='flag-5'>图像</b><b class='flag-5'>处理</b>的<b class='flag-5'>Python</b>库

    关于python中非常实用的一个图像处理库 2

    PIL:Python Imaging Library,是Python环境下最受欢迎的图像处理库,木有之一。然而,在Python2.7之后不再
    的头像 发表于 02-08 17:18 885次阅读