Python图像处理之Pillow库

news/2024/7/21 4:18:13 标签: python, 图像处理, 计算机视觉

Python图像处理

    • 1、图像处理概述
      • 1.1、Pillow库简介
      • 1.2、什么是图像
    • 2、Pillow库图像常用操作
    • 3、Pillow库的Image模块
    • 4、案例:给图像添加水印

1、图像处理概述

1.1、Pillow库简介

  • PIL(Python Image Library)是Python提供的图像处理标准库,来满足开发者处理图像的各种功能

  • PIL支持的图像文件格式包括JPEG、PNG、GIF等,它提供了图像创建、图像显示、图像处理等功能;但是Python2.7后不再支持

  • Pillow是基于PIL模块Fork的一个派生分支,如今已经发展成为比PIL本身更具活力的图像处理库,Pillow模块支持python3

  • Pillow库是一个非常强大的基础图像处理库,是计算机图像识别的基础,主要模块有:Image模块、ImageChops通道操作模块)、ImageColor颜色转换模块、ImageDraw二维图形模块等

Pillow参考学习网站:https://www.osgeo.cn/pillow/reference/

安装:

pip install Pillow==9.5.0

1.2、什么是图像

图像具有如下基本概念:深度(Depth)、通道(Bands)、模式(Mode)、坐标系(Coordinate System)等

1)深度(Depth)

深度是指图像中像素点占得Bit位数

二值图像: 图像的像素点不是0就是1(图像不是黑色就是白色),图像像素点占的位数是1位,图像的深度是1,也称位图

灰度图像: 图像的像素点位于0-255之间(0代表全黑,255代表全白),在0-255之间插入了28=255个等级的灰度,图像像素点占的位数是8位,图像的深度是8

2)通道(Bands)

每张图像都是由一个或多个数据通道构成

RGB是基本的三原色(红色、绿色和蓝色),如果用8位代表一种颜色,那么每种颜色的最大值是255,这样每个像素点的颜色值范围就是(0-255,0-255,0-255),图像的通道是3,而灰度图像的通道是1

3)模式(Mode)

图像实际上是像素数据的矩形图,图像的模式定义了图像中像素的类型和深度

常见的模式有:

  • 1:1位像素,表示黑和白,占8bit像素,在图像表示中称为位图
  • L:表示黑白之间的灰度,占8bit像素
  • P:8bit像素,使用调色版映射
  • RGB:真彩色,占用3x8位像素,其中R为红色,G为绿色,B为蓝色,三原色叠加形成的色彩变化,如三通道都为0则代表黑色,都为255则代表白色
  • RGBA:带透明蒙版的真彩色,其中的A为alpha透明度,占用4x8位像素

4)坐标系(Coordinate System)

PIL中图像的坐标是从左上角开始,向右下角延伸,以二元组(x,y)的形式传递,x轴从左到右,y轴从上到下,即左上角的坐标为(0, 0),因此矩形图像使用四元组表示,例如一个450x450像素的矩形图像可以表示为(0, 0, 450, 450)

2、Pillow库图像常用操作

python">from PIL import Image, ImageDraw, ImageFont
from io import BytesIO
import requests

1) 打开图像

python">'''
Image.open(file,mode)
mode:默认r可读
'''
python"># 1)打开图像文件
img1 = Image.open(r'C:\Users\cc\Desktop\cat.png')
# 2)从文件流中打开图像
resp = requests.get(r'http://f.hiphotos.baidu.com/image/pic/item/b151f8198618367aa7f3cc7424738bd4b31ce525.jpg')
img2 = Image.open(BytesIO(resp.content))

# 展示图像
img1.show()
img2.show()

# 图像旋转(逆时针)
img1.rotate(90).show()

2) 创建图像

python">'''
Image.new(mode,size,color)
mode:模式  size:大小(宽高),二元组类型,单位像素  color:颜色,可以使用颜色名、16进制或RGB数字
'''
python">img3 = Image.new('RGB', (450, 450), (255, 0, 0))
img3.show()

3) 转换格式(保存图像)

python">'''
Image.save(file)
'''
python"># 查看图像类型格式
print(img1.format)
# 另存为JPG类型的图片
img1

http://www.niftyadmin.cn/n/5040054.html

相关文章

反射的作用、应用场景

反射的作用 基本作用:可以的到一个类的全部成分然后操作可以破坏封装性最终要的作用:适合做java的框架,基本上,主流的框架都会基于反射设计出一些通用的功能 案例 使用反射做一个简易版的框架需求 对于任意一个对象,该…

slam 点云退化

Lidar Slam退化问题分析报告 摘要:激光雷达在空旷区域存在点云采集数据较少,特征无法对机器人的位置起到约束的作用,考虑LIW融合对最终定位的影响。当错误的LIW即发生退化,位姿输出不准存在较大误差,如果未检测到退化…

C语言入门Day_23 指针的使用

目录 前言: 1.指针运算符 2.指针的运算和使用 3.易错点 4.思维导图 前言: 上一篇博客中我们了解到指针的两个运算符号": 一个是星号*,一个是&,他们的名字分别是指针运算符和取地址运算符。 1.指针运算…

【前端】jquery获取data-*的属性值

通过jquery获取下面data-id的值 <div id"getId" data-id"122" >获取id</div> 方法一&#xff1a;dataset()方法 //data-前缀属性可以在JS中通过dataset取值&#xff0c;更加方便 console.log(getId.dataset.id);//112//赋值 getId.dataset.…

R语言绘图-3-Circular-barplot图

0. 参考&#xff1a; https://r-graph-gallery.com/web-circular-barplot-with-R-and-ggplot2.html 1. 说明&#xff1a; 利用 ggplot 绘制 环状的条形图 (circular barplot)&#xff0c;并且每个条带按照数值大小进行排列。 2 绘图代码: 注意&#xff1a;绘图代码中的字体…

贪心算法-IPO问题

1、题目描述 给你一个启动资金w&#xff0c;和一个最大项目次数k。 然后&#xff0c;有两个数组&#xff0c;一个cost[]&#xff0c;里面记录了每个项目需要花费的资金。一个profit数组&#xff0c;里面记录了每个项目完成后可以获取的利润。然后请你计算出&#xff0c;给你一个…

大数据时代下统计数据质量的影响因素

统计工作是为政府提供国民经济运行信息的重要手段&#xff0c;将大数据应用于统计工作是社会发展饿必然趋势。 一、内涵 在数字化时代和数字经济的飞速发展&#xff0c;“数据”已经被认定为一种新的生产要素&#xff0c;并且发挥着重要作用。数据质量的高低直接影响数据价值…

51单片机5【写代码前的准备】

1.Keil软件 1.IDE概念 &#xff08;1&#xff09;IDE就是集成开发环境&#xff0c;就是一套用来开发的完整的软件系统。 2.Keil 和 MDK &#xff08;1&#xff09;本来只能用来开发51单片机&#xff0c;叫Keil &#xff08;2&#xff09;后来ARM公司收购了Keil软件&#xff0c…