精华内容
下载资源
问答
  • python2中提供了PIL基础的图像数据出来模块,在python3中更名为了pillow模块,名字虽然发生了改变,但是提供的方法和功能都是一样的,对于日常基础的图像数据处理分析来说是足够用了的,现在正好有一个需求点就是要...
  • PIL图像处理:旋转图像 旋转包括 transpose() 和 rotate() 两种方式。 import matplotlib.pyplot as plt from PIL import Image src_img = Image.open(Src_Image_Path) # 旋转方式一 img1 = src_img.transpose...

    PIL图像处理:旋转图像

    旋转包括 transpose() 和 rotate() 两种方式。

    import matplotlib.pyplot as plt
    from PIL import Image
    
    src_img = Image.open(Src_Image_Path)
    
    # 旋转方式一
    img1 = src_img.transpose(Image.ROTATE_180)   # 引用固定的常量值
    img1.show()
    
    # 旋转方式二
    img2 = src_img.rotate(45)   # 自定义旋转度数
    img2.show()
    
    展开全文
  • pythonPIL图像处理

    2021-01-27 13:38:08
    本文来自于jianshu,文章介绍了pil能处理的图片类型,matplotlib标准模式以及图像通道\几何变换\裁剪等相关内容 。Image读出来的是PIL的类型,而skimage.io读出来的数据是numpy格式的输出可以看出Img读图片的大小是...
  • 主要介绍了详解python opencv、scikit-image和PIL图像处理库比较,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • PIL 图像处理基础

    2020-04-07 07:45:40
    1、图像基本知识 1.1常见图像 • 灰度图像:L = R * 299/1000 + G * 587/1000 + B * 114/1000。 • RGB 图像:真彩色图像,由 RGB 三原色调制而成。 • RGBA:带阿尔法通道的彩色图像,用于 mask 运算,常用语 ico ...

    1、图像基本知识

    1.1常见图像

    • 灰度图像:L = R * 299/1000 + G * 587/1000 + B * 114/1000。
    • RGB 图像:真彩色图像,由 RGB 三原色调制而成。
    • RGBA:带阿尔法通道的彩色图像,用于 mask 运算,常用语 ico 图片。
    • JPEG 格式:目前最常见的图片格式,它诞生于 1992 年,是一个很古老的格
    式。它只支持有损压缩,其压缩算法可以精确控制压缩比,以图像质量换
    得存储空间。由于它太过常见,以至于许多移动设备的 CPU 都支持针对它
    的硬编码与硬解码。
    • PNG:PNG 只支持无损压缩,所以它的压缩比是有上限的。相对于 JPEG 和
    GIF 来说,它最大的优势在于支持完整的透明通道。

    1.2图像格式

    2、几何变换

    Ø 原图
    在这里插入图片描述
    Ø 单通道
    在这里插入图片描述
    Ø RGB 某一个通道空白
    在这里插入图片描述
    Ø HSV 空间
    在这里插入图片描述

    2.1图像坐标系

    像素取值范围在 0-255 之间的无符号整数
    在这里插入图片描述

    2.2仿射变换

    图像处理中,可应用仿射变换对二维图像进行平移、缩放、旋转等操作。实例如
    下:
    在这里插入图片描述
    经仿射变换后,图像关键点依然构成三角形,但三角形形状已经发生变化。
    以旋转为例
    在这里插入图片描述在这里插入图片描述仿射变换通过一系列原子变换复合实现,具体包括:平移(Translation)、缩放
    (Scale)、旋转(Rotation)、翻转(Flip)和错切(Shear)。
    a) 平移
    在这里插入图片描述b) 缩放
    在这里插入图片描述
    c) 旋转
    在这里插入图片描述
    d) 翻转
    在这里插入图片描述

    e) 错切
    在这里插入图片描述

    3、PIL 图像处理

    4、代码实例

    4.1 改变大小

    from PIL import Image
    im = Image.open("./data/Lenna.png")
    region = im.resize((1024, 1024))     ##重新设定大小
    region.show()
    
    #im.thumbnail((100,100))
    #im.show()
    
    box = (100, 100, 300, 300)              ##确定拷贝区域大小
    region = im.crop(box)                   ##将im表示的图片对象拷贝到region中,大小为box
    region.show()
    
    im1 = im.rotate(90) #旋转90度
    print(im.mode, im.size)
    im2 = Image.blend(im1, im, 0.2)#
    im2.show()
    

    4.2 灰度图

    from PIL import Image
    im = Image.open("./data/Lenna.png")
    print(im.format, im.size, im.mode)
    im = im.convert('L') #RGB转为灰度图,其他值如下图
    print(im.mode)
    im.save('./data/Lenna.jpg')# 灰度图
    im.show()
    
    

    在这里插入图片描述
    mode为1(如下图)
    在这里插入图片描述
    4.3旋转

    from PIL import Image
    im = Image.open("./data/Lenna.png")
    im_45 = im.rotate(45)#不补全
    im_30 = im.rotate(30, Image.NEAREST,1)#参数1,表示放大图片,根据近邻点补全(如下图补黑色的部分)
    print(im_45.size,im_30.size)
    im_45.show()
    im_30.show()
    

     在这里插入图片描述
    4.4缓存

    import io
    from PIL import Image
    import base64
    #Base64编码
    im = Image.open("./data/Lenna.png")
    buffer = io.BytesIO()# io通道
    im.save(buffer, 'JPEG')
    binary_data = buffer.getvalue()
    base64_data = base64.b64encode(binary_data)
    print(base64_data)#b'/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGB...
    #解码显示
    byte_data = base64.b64decode(base64_data)
    image_data = io.BytesIO(byte_data)
    img = Image.open(image_data)
    img.show()
    

    4.5通道Channel

    from PIL import Image
    im = Image.open("./data/Lenna.png")
    r,g,b = im.split()
    print(r.mode)# L
    print(r.size)# (512,512)
    # print(r)
    print(im.size)# (512,512)
    
    im_merge = Image.merge("RGB", [r,g,b])# 合并
    im_merge.show()
    
    sequ = im.getdata()
    sequ0 = list(sequ)
    print(sequ0[0])
    print(sequ0[1])
    print(len(sequ0))# 
    
    print(im.getpixel((0,0)))#某一点的像素
    print(im.getpixel((0,1)))
    print(b.getpixel((0,0)))#二维的
    
    展开全文
  • Python+PIL 图像拼接

    2020-05-17 10:34:07
    import PIL.Image as IM import os #子图长度(pixel) width_i = 70 #子图宽度(pixel) heigh_i = 50 #每行包含三个子图 line_max = 11 #每列包含两个子图 row_max = 4 # 建立一个空白图,设置好尺寸,用于填...

    目的

    把多个图片拼接成一张大图

    环境

    Python 3.6.10
    Pillow 7.0.0
    Windows 10

    代码

    import PIL.Image as IM 
    import os
    #子图长度(pixel)
    width_i = 70 
    #子图宽度(pixel)
    heigh_i = 50 
    #每行包含11个子图
    line_max = 11 
    #每列包含4个子图
    row_max = 4 
    # 建立一个空白图,设置好尺寸,用于填放子图
    to = IM.new("RGBA",(width_i * line_max, heigh_i *row_max))
    path_E = "存放子图的文件夹"
    # 获取文件夹下所有子图名字
    files = os.listdir(path_E)
    for i in range(line_max):
        for j in range(row_max):
        ## 获取当前子图路径
            file = files[index]
            path_f = os.path.join(path_E,file)
        ## 打开子图并修改图片尺寸
            img = IM.open(path_f)
            img = img.resize((width_i,heigh_i))
        ## 确定当前子图在大图中的位置,并将其放入其中
            loc = (int(i%line_max*width_i),int(j%row_max*heigh_i))
            to.paste(img,loc)
            index += 1
    ## 保存拼接后的结果
    to.save("保存路径")
    
    展开全文
  • Python-PIL 图像处理基本操作(一)

    万次阅读 2017-12-29 17:59:26
    Python-PIL 图像处理基本操作(一) 一开始需要importimport os import numpy as np from PIL import Image, ImageDraw########################################## # 读入图片,默认为RGB顺序,读出的变量img类型为...

    Python-PIL 图像处理基本操作(一)
    一开始需要import

    import os
    import numpy as np
    from PIL import Image, ImageDraw
    ##########################################
    # 读入图片,默认为RGB顺序,读出的变量img类型为Image类型, size为(width,height),但是为彩色三通道图像
    img = Image.open(os.path.join('images', '000906' + '.jpg'))
    
    #显示图像
    img.show()
    
    #返回图像的格式,'JPEG'
    print img.format 
    
    #返回图像大小,(width,height)
    print img.size 
    
    #输出RGB
    print img.mode
    
    #输出元组('R', 'G', 'B')
    print img.getbands() 
    
    ##########################################
    
    #装换Image格式为numpy数组array格式,进行图像处理
    #上面读出的img还是Image格式,不能对其直接处理,需要对其转换为array格式
    #这里需要注意的是未转换格式之前img.size为(width,height),转换之后img.shape为(height,width,3)
    
    img = np.array(img, dtype = np.uint8)
    
    #保存图片
    img.save(os.path.join('images', '13' + '.jpg'))
    
    #如果需要保存的图片变量是数组array形式的,需要先转换为Image格式,然后再保存
    img = Image.fromarray(img.astype(np.uint8)) #由img.shape为(height,width,3)转换为img.size为(width,height)
    
    img.save(os.path.join('images', '13' + '.jpg'))
    
    如果获取图像的最大值max()之类的,也把img转换为array格式,再计算
    
    ##########################################
    
    #缩放图像
    img = Image.open(os.path.join('images', '000906' + '.jpg'))
    
    img_resized = img.resize((width,height)) #和读入图像的格式相同,也是先width后height
    
    #如果想改变插值算法,可以如下(默认为NEAREST)
    
    im_resized = im.resize((width,height), Image.BILINEAR)
    
    #NEAREST:最近滤波。从输入图像中选取最近的像素作为输出像素。它忽略了所有其他的像素。
    #BILINEAR:双线性滤波。在输入图像的2x2矩阵上进行线性插值。注意:PIL的当前版本,做下采样时该滤波器使用了固定输入模板。
    #BICUBIC:双立方滤波。在输入图像的4x4矩阵上进行立方插值。注意:PIL的当前版本,做下采样时该滤波器使用了固定输入模板。
    #ANTIALIAS:平滑滤波。这是PIL 1.1.3版本中新的滤波器。对所有可以影响输出像素的输入像素进行高质量的重采样滤波,以计算输出像素值。在当前的PIL版本中,这个滤波器只用于改变尺寸和缩略图方法。
    #注意:在当前的PIL版本中,ANTIALIAS滤波器是下采样(例如,将一个大的图像转换为小图)时唯一正确的滤波器。BILIEAR和BICUBIC滤波器使用固定的输入模板,用于固定比例的几何变换和上采样是最好的。
    
    ##########################################
    
    #画直线,矩形需要用到PIL的ImageDraw模块
    
    img = Image.open(os.path.join('images', '000906' + '.jpg')) #读入图像
    
    draw = ImageDraw.Draw(img) #导入模块
    
    x1 = 20  # 第一个点列坐标
    y1 = 50  #第一个点行坐标
    x2 = 500 #第二个点列坐标
    y2 = 350 #第二个点行坐标
    
    #下面的这两种形式[]或者()都可以,fill制定颜色RGB,width制定宽度
    draw.line([x1,y1,x2,y2], fill = (255, 0, 0), width = 5)
    draw.line((x1,y1,x2,y2), fill = (255, 0, 0), width = 5)
    
    #下面是画多条直线,可以画出垂直的矩形或者旋转的矩形,四个点坐标形式与上面相同
    draw.line(((60,60),(90,60), (90,90), (60,90), (60,60)), fill = (255, 0, 0), width = 2)
    
    img.show() #显示
    img.save(os.path.join('images', '13' + '.jpg')) #保存在images/13.jpg
    
    #画矩形,这里和上面画直线差不多
    img = Image.open(os.path.join('images', '000906' + '.jpg'))
    draw = ImageDraw.Draw(img)
    
    #x表示列坐标,y表示行坐标
    x1 = 20
    y1 = 50
    x2 = 500
    y2 = 350
    
    #矩形左上角坐标和右下角坐标,后面是制定颜色RGB,红色
    draw.rectangle([x1, y1, x2, y2], outline=(255, 0, 0))
    
    #在左上角添加红色文字 ship
    draw.text([x1, y1], 'ship', (255, 0, 0))
    
    img.show() #显示
    img.save(os.path.join('images', '13' + '.jpg')) #保存在images/13.jpg
    
    ##########################################
    
    #图像格式转化
    
    img = Image.open(os.path.join('images', '000906' + '.jpg'))
    
    #转化为灰度图
    gray=img.convert('L')
    
    #使用函数convert()来进行转换,它是图像实例对象的一个方法,接受一个 mode 参数,用以指定一种色彩模式,mode 的取值可以是如下几种:
    #· 1 (1-bit pixels, black and white, stored with one pixel per byte)
    #· L (8-bit pixels, black and white)
    #· P (8-bit pixels, mapped to any other mode using a colour palette)
    #· RGB (3x8-bit pixels, true colour)
    #· RGBA (4x8-bit pixels, true colour with transparency mask)
    #· CMYK (4x8-bit pixels, colour separation)
    #· YCbCr (3x8-bit pixels, colour video format)
    #· I (32-bit signed integer pixels)
    #· F (32-bit floating point pixels)
    
    #将灰度图转换为array格式,此时大小为(height,width),如果是彩色图像,为(height,width,3)
    gray = np.array(gray, dtype = np.uint8)
    
    ##########################################
    
    #拆分通道和合并通道
    
    #拆分的通道,比如r,为灰度图,Model:L, 大小为(width,height),还是为Image格式,不能直接处理,需要转化为array格式
    r,g,b = img.split()
    
    #合并后的图像 Model: RGB, 大小为(width,height),还是为Image格式,不能直接处理,需要转化为array格式
    img_merged = Image.merge('RGB',(r,g,b)) 

    未完待续…

    展开全文
  • PIL 图像增强

    千次阅读 2018-05-24 14:36:03
    python中PIL模块中有一个叫做ImageEnhance的类,该类专门用于图像的增强处理,不仅可以增强(或减弱)图像的亮度、对比度、色度,还可以用于增强图像的锐度。from PIL import Imagefrom PIL import ImageEnhance#原始图像...
  • PIL 图像旋转并保存

    千次阅读 2018-10-15 15:08:01
    from PIL import Image # 读取图片 img = Image.open(r'./000001.jpg') # 转化为alpha层 img_alpha = img.convert('RGBA') # 旋转图像 rot = img_alpha.rotate(45, expand = 1) # 与旋转图像大小相同的白色区域 ...
  • PIL图像增强

    2018-02-11 18:23:22
    #-*- coding: UTF-8 -*- from PIL import Image from PIL import ImageEnhance ...#原始图像 image = Image.open('lena.jpg') image.show() #亮度增强 enh_bri = ImageEnhance.Brightness(image) b...
  • PIL图像处理-二值化

    千次阅读 2019-02-25 23:39:33
    时隔很久才知道原来这种对图像的处理方式叫做二值化!什么是二值化呢?就是把一张图的像素点编程0或255,完全的白或黑。 比如这么一张32*32的小图片(当然他已经是黑白的了) 二值化处理之后,每个像素点上就只有两...
  • # to return a PIL Image img = Image.fromarray(img) # img.shape: (112,112,1) #我的数据集是灰度图 报错: KeyError: ((1, 1, 1), '|u1') TypeError: Cannot handle this data type 解决办法:问题是数据...
  • python PIL 图像处理 (二)

    万次阅读 多人点赞 2017-04-13 12:16:08
    第 1 章 基本的图像操作和处理 本章讲解操作和处理图像的基础知识,将通过大量示例介绍处理图像所需的 Python 工具包,并介绍用于读取...PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功
  • OpenCV和PIL图像处理的差异小总结

    千次阅读 2019-06-06 16:41:12
    1 PIL(RGB) Image.open 方法打开的图片类型为PIL Image, 值为0-255,尺寸为 W * H * C。 通过img=np.array(img)转为numpy数组后,尺寸为 H * W * C。 from PIL import Image import numpy as np image = ...
  • Win7 64位下Python安装PIL图像处理库

    万次阅读 多人点赞 2017-04-17 13:30:58
    Win7 64位 Python PIL
  • PIL图像处理之ImageFilter

    千次阅读 2018-07-19 18:03:56
    from PIL import Image im = Image.open('cat.png') # 获得尺寸 w,h = im.size # 改变尺寸 + - * // 都可以 im.thumbnail((w//2,h//2)) im.save('yes1.png','png') 图像的滤波ImageFiter: B...
  • PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。操作图像来看看最常见的图像缩放操作,只需三四行代码:import Image # 打开一个jpg图像文件,...
  • You can also use any pixel decoder supported by PIL. For more information on available decoders, see the section  Writing Your Own File Decoder . Note that this function decodes pixel data ...
  • ImageEnhance模块提供了一些用于图像增强的类。 一、ImageEnhance模块的接口 所有的增强类都实现了一个通用的接口,包括一个方法: enhancer.enhance(factor) ⇒ image 该方法返回一个增强过的图像。变量factor是一...
  • 2、PIL是常用的第三方模块之一,全称Python Imaging Library,已经是Python平台事实上的图像处理标准库了。Window系统下使用PIL前需要作如下准备工作: (1)从官网下载PIL安装包:...
  • 下面小编就为大家带来一篇Python用Pillow(PIL)进行简单的图像操作方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • python图像处理 (一).PIL图像处理库学习① 1、自定义创建图片 PIL除了可以从文件中打开一张图片,我们也可以创建一张图片 Image.new(mode,size) ⇒ image Image.new(mode, size,color) ⇒ image 创建具有给定...
  • 1. PIL image转换成array 当使用PIL.Image.open()打开图片后,如果要使用img.shape函数,需要先将image形式转换成array数组 img = numpy.array(image) 或者 img = np.asarray(image) array和asarray都可将结构...
  • 进行深度学习时,对图像进行预处理的过程是非常重要的,使用pytorch或者TensorFlow时需要对图像进行预处理以及展示来观看处理效果,因此对python中的图像处理框架进行图像的读取和基本变换的掌握是必要的,接下来...
  • Python:PIL图像处理库绘制国际象棋棋盘

    千次阅读 多人点赞 2021-07-14 18:34:35
    为了填充使用 python PIL 图像处理库绘制国际象棋棋盘的空白,今日分享此文。 目录 1 PIL绘制国际象棋棋盘流程 1.1 思路秒懂 1.2 分块解析 2 完整代码 3 结果展示 1 PIL绘制国际象棋棋盘流程 1.1 思路...
  • PIL图像的变换

    2019-12-05 22:52:54
    思路 : 读入图片后 , 获取RGB值 ,... from PIL import Image >>> import numpy as np >>> a=np.array(Image.open("F:\截图,,,,,,\QQ截图20190717170414.png")) >>> print(a.sha...
  • PIL 读取图像,显示图像,ROI,保存图像 import matplotlib.pyplot as plt from PIL import Image src_img = Image.open(Src_Image_Path) print(src_img.size) # image size plt.figure("src_image") plt.imshow...
  • 读取数据 先来对比一下GDAL和PIL数据读取的结果 GDAL: ds: gdal.Dataset = gdal.Open('test.jpg') gdal_arr = ds.ReadAsArray() print(gdal_arr.shape) # (3, 256, 256) ...发现GDAL和PIL图像

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,122
精华内容 14,848
关键字:

pil图像