精华内容
下载资源
问答
  • Pillow是Python里的图像处理库(PIL:Python Image Library),提供了了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作等。颜色与RGBA值计算机通常将图像表示...

    Pillow是Python里的图像处理库(PIL:Python Image Library),提供了了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作等。

    颜色与RGBA值

    计算机通常将图像表示为RGB值,或者再加上alpha值(通透度,透明度),称为RGBA值。在Pillow中,RGBA的值表示为由4个整数组成的元组,分别是R、G、B、A。整数的范围0~255。RGB全0就可以表示黑色,全255代表黑色。可以猜测(255, 0, 0, 255)代表红色,因为R分量最大,G、B分量为0,所以呈现出来是红色。但是当alpha值为0时,无论是什么颜色,该颜色都不可见,可以理解为透明。

    from PIL import ImageColor

    print(ImageColor.getcolor(‘red‘, ‘RGBA‘))

    #也可以只以RBG的方式查看

    print(ImageColor.getcolor(‘black‘, ‘RGB‘))

    图像的坐标表示

    图像中左上角是坐标原点(0, 0),这和平常数学里的坐标系不太一样。这样定义的坐标系意味着,X轴是从左到右增长的,而Y轴是从上到下增长。

    在Pillow中如何使用上述定义的坐标系表示一块矩形区域?许多函数或方法要求提供一个矩形元组参数。元组参数包含四个值,分别代表矩形四条边的距离X轴或者Y轴的距离。顺序是(左,顶,右,底)。右和底坐标稍微特殊,表示直到但不包括。可以理解为[左, 右)和[顶, 底)这样左闭右开的区间。比如(3, 2, 8, 9)就表示了横坐标范围[3, 7];纵坐标范围[2, 8]的矩形区域。

    使用Pillow操作图像

    from PIL import Image

    im_path = r‘F:Jupyter Notebookcsv_time_datetime_PILabbit.jpg‘

    im = Image.open(im_path)

    width, height = im.size

    #宽高

    print(im.size, width, height)

    #格式,以及格式的详细描述

    print(im.format, im.format_description)

    im.save(r‘C:UsersAdministratorDesktopabbit_copy.jpg‘)

    im.show()

    im.size返回一个元组,分别是宽和高。show()方法会调用系统默认图像查看软件,打开并显示。im.format可查看图像的格式。save()可保存处理后的图片,如果未经处理,保存后的图像占用的空间(字节数)一般也与原图像不一样,可能经过了压缩。

    裁剪图像

    Image有个crop()方法接收一个矩形区域元组(上面有提到)。返回一个新的Image对象,是裁剪后的图像,对原图没有影响。

    im = Image.open(im_path)

    cropedIm = im.crop((700, 100, 1200, 1000))

    cropedIm.save(r‘C:UsersAdministratorDesktopcropped.png‘)

    调整图像的大小

    resize方法返回指定宽高度的新Image对象,接受一个含有宽高的元组作为参数。宽高的值得是整数。

    im = Image.open(im_path)

    width, height = im.size

    resizedIm = im.resize((width, height+(1920-1080)))

    resizedIm.save(r‘C:UsersAdministratorDesktopesize.png‘)

    展开全文
  • 前言文章主要介绍了Python图像处理模块ndimage用法,结合实例形式分析了Python图像处理模块ndimage基本功能及常见的图形运算操作实现技巧一 原始图像1 代码from scipy import miscfrom scipy import ndimageimport ...

    前言

    文章主要介绍了Python图像处理模块ndimage用法,结合实例形式分析了Python图像处理模块ndimage基本功能及常见的图形运算操作实现技巧

    一 原始图像

    1 代码

    from scipy import miscfrom scipy import ndimageimport matplotlib.pyplot as pltface = misc.face()#face是测试图像之一plt.figure()#创建图形plt.imshow(face)#绘制测试图像plt.show()#原始图像

    2 运行结果

    78897d3b30244716048db3cb091f580f.png

    二 高斯滤波

    1 代码

    from scipy import miscfrom scipy import ndimageimport matplotlib.pyplot as pltface = misc.face()#face是测试图像之一plt.figure()#创建图形blurred_face = ndimage.gaussian_filter(face, sigma=7)#高斯滤波plt.imshow(blurred_face)plt.show()

    2 运行结果

    61df3a5dd5f0de7fe333c68dbcce3d58.png

    三 边缘锐化处理

    1 代码

    from scipy import miscfrom scipy import ndimageimport matplotlib.pyplot as pltface = misc.face()#face是测试图像之一plt.figure()#创建图形blurred_face1 = ndimage.gaussian_filter(face, sigma=1)#边缘锐化blurred_face3 = ndimage.gaussian_filter(face, sigma=3)sharp_face = blurred_face3 +6*(blurred_face3-blurred_face1)plt.imshow(sharp_face)plt.show()

    2 运行结果

    f8b0e619579eae707e1dfee23281d8bc.png

    四 中值滤波

    1 代码

    from scipy import miscfrom scipy import ndimageimport matplotlib.pyplot as pltface = misc.face()#face是测试图像之一plt.figure()#创建图形median_face = ndimage.median_filter(face,7)#中值滤波plt.imshow(median_face)plt.show()

    2 运行结果

    6cec4d67c1a78c822f38d8ee98538edf.png

    最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。

    展开全文
  • 主要介绍了Python图像处理模块ndimage用法,结合实例形式分析了Python图像处理模块ndimage基本功能及常见的图形运算操作实现技巧,需要的朋友可以参考下
  • 到目前为止,我们使用的大多数技术都要求我们通过其特征手动分割图像。但是我们实际上可以使用无监督的聚类算法为我们完成此任务。在本文中,我们将讨论如何做到这一点。让我们开始吧!导入所需的Python库import ...

    835f90bebe64faea13119e8cb3910ce7.png

    到目前为止,我们使用的大多数技术都要求我们通过其特征手动分割图像。

    但是我们实际上可以使用无监督的聚类算法为我们完成此任务。在本文中,我们将讨论如何做到这一点。

    让我们开始吧!

    导入所需的Python库

    import numpy as np

    import pandas as pd

    import matplotlib.pyplot as plt

    from mpl_toolkits.mplot3d import Axes3D

    from matplotlib import colors

    from skimage.color import rgb2gray, rgb2hsv, hsv2rgb

    from skimage.io import imread, imshow

    from sklearn.cluster import KMeans

    太好了,让我们现在导入将要使用的图像。

    dog = imread('beach_doggo.PNG')

    plt.figure(num=None, figsize=(8, 6), dpi=80)

    imshow(dog);

    2bf98ca8bc42e56182cb9dce768bd4cb.png

    def image_to_pandas(image):

    df = pd.DataFrame([image[:,:,].flatten(),

    image[:,:,1].flatten(),

    image[:,:,2].flatten()]).T

    df.columns = [‘Red_Channel’,’Green_Channel’,’Blue_Channel’]

    return df

    df_doggo = image_to_pandas(dog)

    df_doggo.head(5)

    38ea91766dbdc92ebc3ced1f2b8484f1.png

    这使得图像的操作更加简单,因为更容易将其视为可以输入到机器学习算法中的数据。

    在我们的实例中,我们将使用K-means算法对图像进行聚类。

    plt.figure(num=None, figsize=(8, 6), dpi=80)

    kmeans = KMeans(n_clusters= 4, random_state = 42).fit(df_doggo)

    result = kmeans.labels_.reshape(dog.shape[],dog.shape[1])

    imshow(result, cmap='viridis')

    plt.show()

    0096939f992e0b3ccdf6479b84df60f3.png

    如我们所见,图像被分为四个不同的区域。让我们分别可视化每个区域。

    fig, axes = plt.subplots(2,2, figsize=(12, 12))

    for n, ax in enumerate(axes.flatten()):

    ax.imshow(result==[n], cmap='gray');

    ax.set_axis_off()

    fig.tight_layout()

    6c49e8203f35771e2bf827a14c6e29e5.png

    该算法根据R,G和B像素值分割图像。当然,一个缺点是这是一种完全不受监督的学习算法。它并不特别关心任何特定群集背后的含义。作为证据,我们可以看到第二和第四簇都具有狗的突出部分(阴影部分和未阴影部分)。也许运行4个集群过多,让我们重试集群,但将集群数设置为3。

    ac9d18c9c27cc5004cd18713989ee2fb.png

    太好了,我们可以看到狗是一个整体。现在让我们看看如果将每个聚类作为单独的蒙版应用于图像会发生什么。

    fig, axes = plt.subplots(1,3, figsize=(15, 12))

    for n, ax in enumerate(axes.flatten()):

    dog = imread('beach_doggo.png')

    dog[:, :, ] = dog[:, :, ]*(result==[n])

    dog[:, :, 1] = dog[:, :, 1]*(result==[n])

    dog[:, :, 2] = dog[:, :, 2]*(result==[n])

    ax.imshow(dog);

    ax.set_axis_off()

    fig.tight_layout()

    d503f374c58a97aed4158a4d5849d5a6.png

    我们可以看到,该算法生成了三个不同的簇,即沙子,生物和天空。当然,算法本身对这些簇并不十分在意,只是它们共享相似的RGB值。要由人类来解释这些簇。

    在我们离开之前,我认为如果简单地将其绘制在3D图形上,则对实际显示我们的图像会有所帮助。

    def pixel_plotter(df):

    x_3d = df['Red_Channel']

    y_3d = df['Green_Channel']

    z_3d = df['Blue_Channel']

    color_list = list(zip(df['Red_Channel'].to_list(),

    df['Blue_Channel'].to_list(),

    df['Green_Channel'].to_list()))

    norm = colors.Normalize(vmin=,vmax=1.)

    norm.autoscale(color_list)

    p_color = norm(color_list).tolist()

    fig = plt.figure(figsize=(12,10))

    ax_3d = plt.axes(projection='3d')

    ax_3d.scatter3D(xs = x_3d, ys = y_3d, zs = z_3d,

    c = p_color, alpha = 0.55);

    ax_3d.set_xlim3d(, x_3d.max())

    ax_3d.set_ylim3d(, y_3d.max())

    ax_3d.set_zlim3d(, z_3d.max())

    ax_3d.invert_zaxis()

    ax_3d.view_init(-165, 60)

    pixel_plotter(df_doggo)

    c4ec24b354599f23f0d62b2552119fc8.png

    我们应该记住,这实际上是算法定义“紧密度”的方式。如果我们将K-Means算法应用于该图,则其分割图像的方式将变得非常清晰。

    df_doggo['cluster'] = result.flatten()

    def pixel_plotter_clusters(df):

    x_3d = df['Red_Channel']

    y_3d = df['Green_Channel']

    z_3d = df['Blue_Channel']

    fig = plt.figure(figsize=(12,10))

    ax_3d = plt.axes(projection='3d')

    ax_3d.scatter3D(xs = x_3d, ys = y_3d, zs = z_3d,

    c = df['cluster'], alpha = 0.55);

    ax_3d.set_xlim3d(, x_3d.max())

    ax_3d.set_ylim3d(, y_3d.max())

    ax_3d.set_zlim3d(, z_3d.max())

    ax_3d.invert_zaxis()

    ax_3d.view_init(-165, 60)

    pixel_plotter_clusters(df_doggo)

    05e9ba8c206417bfda9adc2bc51483dc.png

    结论

    K-Means算法是一种流行的无监督学习算法,任何数据科学家都可以轻松使用它。虽然它很简单,但对于像素差异非常明显的图像来说,它的功能非常强大。在以后的文章中,我们将介绍其他机器学习算法,我们可以用于图像分割以及微调超参数。但现在,我希望你可以在自己的任务中使用这种方法。

    【飞马会】

    展开全文
  • python图像处理PIL实例之读取图片 """ 读取图片实例 """ from PIL import Image import numpy as np import os import pickle # 读取图片的目录 img_dir1='./images/' # 保存图片的目录 img_dir2='./storage/' # ...

    python图像处理PIL实例之读取图片

    """
    读取图片实例
    """
    from PIL import Image
    import numpy as np
    import os
    import pickle
    # 读取图片的目录
    img_dir1='./images/'
    # 保存图片的目录
    img_dir2='./storage/'
    # 保存数组的文件
    array_file ='./array.bin'
    # 2.读取图片,将图片保存成大的一维数组,将数组保存到文件
    def image_array_file():
        # 获取所有图片的名称
        imgnames=os.listdir(img_dir1)
        # 定义变量保存所有图片的数组
        img_array = np.array([])
        print(imgnames)
        for imgname in imgnames:
            # 读取图片
            img=Image.open(img_dir1+imgname)
            # 将每张图片进行通道分割
            r,g,b=img.split()
            print(r)
            # 将r g b转换为一维数组
            r_array=np.array(r).reshape(40000)
            g_array =np.array(g).reshape(40000)
            b_array =np.array(b).reshape(40000)
            # 将r_array,g_array,b_array拼接为一维数组
            arrs=np.concatenate((r_array,g_array,b_array))
            img_arrays=np.concatenate(arrs,img_array)
        # 将一维数组保存到文件
        with open(array_file,'wb') as f:
            pickle.dump(img_arrays,f)
    
    # 读取文件内容,转换图片
    def file_image():
        with open(array_file,'rb') as f:
            images=pickle.load(f)
            #一维数组存放9张图片,3个通道,尺寸:250,250
            ima_arr=images.reshape(9,3,250,250)
        for i in range(9):
            r=Image.fromarray(ima_arr[i][0].convert('L'))
            g=Image.fromarray(ima_arr[i][1].convert('L'))
            b=Image.fromarray(ima_arr[i][2].convert('L'))
        # 合并图片
        image=Image.merge('RGB',(r,g,b))
        image.save(img_dir2+'.png')
    file_image()
    
    
    
    
    展开全文
  • 主要介绍了Python图像处理二值化方法实例汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 今天小编就为大家分享一篇Python图像处理之识别图像中的文字(实例讲解),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 本文实例讲述了Python图像处理模块ndimage用法。分享给大家供大家参考,具体如下:一 原始图像1 代码from scipy import miscfrom scipy import ndimageimport matplotlib.pyplot as pltface = misc.face()#face是...
  • 本文实例讲述了python图像处理之反色实现方法。分享给大家供大家参考。具体如下:我们先加载一个8位灰度图像每一个像素对应的灰度值从0-255则只需要读取每个像素的灰度值A,再将255-A写入这样操作一遍后,图像就会...
  • 本文实例讲述了python图像处理之镜像实现方法。分享给大家供大家参考。具体分析如下:图像的镜像变化不改变图像的形状。图像的镜像变换分为三种:水平镜像、垂直镜像、对角镜像设图像的大小为M×N,则水平镜像可按...
  • 主要介绍了python 图像处理画一个正弦函数代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 本文实例讲述了python图像处理之反色实现方法。分享给大家供大家参考。具体如下:我们先加载一个8位灰度图像每一个像素对应的灰度值从0-255则只需要读取每个像素的灰度值A,再将255-A写入这样操作一遍后,图像就会...
  • Pillow是Python里的图像处理库(PIL:Python Image Library),提供了了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作等。1)使用 Image 类PIL最重要的类是...
  • 今天小编就为大家分享一篇Python 图像处理: 生成二维高斯分布蒙版的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Python 图像处理库 Pillow 入门(含代码)Pillow是Python里的图像处理库(PIL:Python Image Library),提供了了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作...
  • 本文实例讲述了python图像处理之反色实现方法。分享给大家供大家参考。具体如下:我们先加载一个8位灰度图像每一个像素对应的灰度值从0-255则只需要读取每个像素的灰度值A,再将255-A写入这样操作一遍后,图像就会...
  • 图像的二值化或阈值化(Binarization)旨在提取图像中的目标物体,将背景以及噪声...二值化处理可以将图像中的像素划分为两类颜色,常用的二值化算法如公式1所示:{Y=0,gray=T{Y=0,gray=T​当灰度Gray小于阈值T时,...
  • 结合实例形式分析了Python使用Image.blend()接口与Image.composite()接口进行图像合成的相关操作技巧,需要的朋友可以参考下本文实例讲述了Python图像处理实现两幅图像合成一幅图像的方法。分享给大家供大家参考,...
  • 玩转Python图像处理

    千人学习 2020-06-12 16:58:51
    课程不仅介绍函数的具体使用,也介绍了常用算法的基本原理,帮助学习者更好地理解图像处理的基本逻辑、方法,快速入门图像处理领域。 【我将如何教你】 1)在“黑盒”和“白盒“之间取得平衡...
  • 主要介绍了python图像处理之镜像实现方法,实例分析了镜像的实现原理与具体操作方法,需要的朋友可以参考下
  • 在用python进行图像处理时,二值化是非常重要的一步,现总结了自己遇到过的6种 图像二值化的方法(当然这个绝对不是全部的二值化方法,若发现新的方法会继续新增)。1. opencv 简单阈值 cv2.threshold2. opencv 自适应...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 526
精华内容 210
关键字:

python图像处理实例

python 订阅