• python中利用numpy库和scipy库来进行各种数据操作和科学计算。...以后,只要是在python中进行数字图像处理,我们都需要导入这些包: from PIL import Image import numpy as np import matplotlib.pyplot as...

    python中利用numpy库和scipy库来进行各种数据操作和科学计算。我们可以通过pip来直接安装这两个库

    pip install numpy
    pip install scipy

    以后,只要是在python中进行数字图像处理,我们都需要导入这些包:

    from PIL import Image
    import numpy as np
    import matplotlib.pyplot as plt

    打开当前目录图像并转化为矩阵并显示

    from PIL import Image
    import numpy as np
    import matplotlib.pyplot as plt
    img=np.array(Image.open('lena.jpg'))  #打开当前目录图像并转化为数字矩阵
    plt.figure("lena")
    plt.imshow(img)
    plt.axis('off')
    plt.show()

    调用numpy中的array()函数就可以将PIL对象转换为数组对象。

    查看图片信息,可用如下的方法:

    print img.shape  
    print img.dtype 
    print img.size 
    print type(img)

    如果是RGB图片,那么转换为array之后,就变成了一个rows*cols*channels的三维矩阵,因此,我们可以使用

    img[i,j,k]来访问像素值。

    打开图片,并随机添加一些噪声

    from PIL import Image
    import numpy as np
    import matplotlib.pyplot as plt
    img=np.array(Image.open('lena.jpg'))
    
    #随机生成5000个随机噪声点
    rows,cols,dims=img.shape
    for i in range(5000):
        x=np.random.randint(0,rows)
        y=np.random.randint(0,cols)
        img[x,y,:]=255
        
    plt.figure("lena")
    plt.imshow(img)
    plt.axis('off')
    plt.show()

     

    简单灰度化处理,R,G,B分量均用R分量代替

    from PIL import Image
    import numpy as np
    img = Image.open("lena.jpg")
    img_array = np.array(img)
    arr1 = img_array[:]
    print(arr1.shape)
    for x in range(1,arr1.shape[0]):
        for y in range(1,arr1.shape[1]):
            a = img_array[x,y][0]
            b = img_array[x,y][1]
            c = img_array[x,y][2]
            arr1[x,y] =(a,a,a)
            #arr1[x, y] = (b, b, b)
            ##arr1[x, y] = (c, c, c)
    image_arr = Image.fromarray(arr1)
    image_arr.show()

    将lena图像二值化,像素值大于128的变为1,否则变为0

    from PIL import Image
    import numpy as np
    import matplotlib.pyplot as plt
    img=np.array(Image.open('lena.jpg').convert('L'))
    
    rows,cols=img.shape
    for i in range(rows):
        for j in range(cols):
            if (img[i,j]<=128):
                img[i,j]=0
            else:
                img[i,j]=1
                
    plt.figure("lena")
    plt.imshow(img,cmap='gray')
    plt.axis('off')
    plt.show()

     

    如果要对多个像素点进行操作,可以使用数组切片方式访问。切片方式返回的是以指定间隔下标访问 该数组的像素值。

    下面给出一个有关灰度图像的一些例子:

     

    img[i,:] = im[j,:] # 将第 j 行的数值赋值给第 i 行
    
    img[:,i] = 100 # 将第 i 列的所有数值设为 100
    
    img[:100,:50].sum() # 计算前 100 行、前 50 列所有数值的和
    
    img[50:100,50:100] # 50~100 行,50~100 列(不包括第 100 行和第 100 列)
    
    img[i].mean() # 第 i 行所有数值的平均值
    
    img[:,-1] # 最后一列
    
    img[-2,:] (or im[-2]) # 倒数第二行

     

     

    展开全文
  • 最近需要学习python图像处理方法,在这里简单的总结一下自己学到的一些图像处理的方法把~ 1.Python PIL库读取图像 import PIL from PIL import Image im = Image.open(filepath) 2.简单进行图像旋转 out = ...

    最近需要学习python的图像处理方法,在这里简单的总结一下自己学到的一些图像处理的方法把~

    1.Python PIL库读取图像

    import PIL
    from PIL import Image
    
    im = Image.open(filepath)

    2.简单进行图像旋转

    out = im.rotate(270) #这里输入的是旋转角度
    out = im.transpose(Image.ROTATE_270)

    3.在PIL中还可以吧RGB图像的R,G,B分离出来使用的呢;例如:

    r,g,b = im.spilt()
    im = Image.merge("RGB",(r,b,g))
    #这样R,G,B就调换成了R,B,G来使用了,也就是说B的值当R来使用这个意思
    4、图像增强,可以增强一下对比度
    from PIL import ImageEnhance as ie
    enh = ie.Contrast(image)
    enh.enhance(1.3).show("30% enhance")

    5、利用Image模块还可以创建thumnail

    import glob
    for infile in glob.glob("*.jpg"):
        file, ext = os.splitext(infile)
        im = Image.open(infile)
        im.thumbnail((128, 128), Image.ANTIALIAS)
        im.save(file + ".thumbnail", "JPEG")
    

    下面来介绍一下Image模块下的一些函数:

    1=》Image.new(mode,size)/Image.new(mode,size,color)

    这个是新创建一张图片

    2=》Image.open(infile)/Image.open(infile,mode)

    这个是打开一张图片,打开的这张图片呢,在你对这张图片进行操作之前是不会读取进来的,在你进行操作的时候就读进来

    如果指定了mode的话,那一定是“r“

    3=》Image.blend(image1,image2,alpha)

    out = image * (1-alpha) + image2 * alpha

    看看out你就知道了什么意思了,当alpha是0时,输出的就是image1,当alpha是1时,输出的就是image2

    但是两个图像的大小需要一致的

    4=》Image.composite(image1,image2,mask)

    利用mask当做是alpha,创建一张在image1,image2之间的新图像

    5=》Image.eval(function,image)

     

    6=>Image.fromstring(mode,size,data)/Image.fromstring(mode,size,data,decoder,parameters)

    对于第一个,就是从一个string中的像素数据中创建图像,使用的解码器是”raw“;第二个就是自选decoder了

    7=>Image.merge(mode,bands)

     

     

     

    展开全文
  • Python3图片处理:利用Python3,由图一得到图二 ![图一](https://img-ask.csdn.net/upload/201806/02/1527911703_958982.png) ![图二](https://img-ask.csdn.net/upload/201806/02/1527911680_867611.png)
  • 本次的基础:Image图片基本处理库和ImageFilter滤镜库 一、图片处理 from PIL import Image,ImageFilter # 1、打开图片 img = Image.open(r'E:\python\material\img1.jpg') # 2、更改图像模式 img = img.convert...

    本次的基础:Image图片基本处理库和ImageFilter滤镜库

    一、图片处理

    from PIL import Image,ImageFilter
    #  1、打开图片
    img = Image.open(r'E:\python\material\img1.jpg')
    # 2、更改图像模式
    img = img.convert('L')
    # 3、保存/或展示图片
    img.show()

    二、缩放图片/滤镜处理

    # 1、打开图片
    img = Image.open(r'E:\python\material\img2.jpg')
    # 2、获得图片尺寸,size返回宽、高两个参数
    w, h = img.size
    print(w,h)
    # 3、对图片宽高缩放操作
    img.thumbnail((w//2, h//2))
    # 4、滤镜操作(BlUR均值滤波模糊 CONTOUR找轮廓 FIND_EDGES边缘处理)
    img = img.filter(ImageFilter.CONTOUR)
    # 5、保存图片
    img.save('美女.jpg')

    三、图片合成

    # 1、打开被替换的图片
    img1 = Image.open(r'E:\python\material\img1.jpg')
    # 2、添加位置坐标(规整图片取左上角像素坐标和右下角像素坐标)
    box = (100, 128, 400, 572)
    # 3、打开替换图片/其他操作,如旋转
    img2 = Image.open(r'E:\python\material\img2.jpg')
    #img2 = img2.rotate(60)  #rotate(逆时针旋转度数)
    # 4、控制替换图片大小    resize((横坐标,纵坐标))
    tmg_img = img2.resize((box[2]-box[0], box[3]-box[1]))
    # 5、粘贴操作    paste(替换的图片,替换的位置坐标)
    img1.paste(tmg_img, box)
    """
        合成照片(相加)  blend(图片一,图片二,合成度)
        注意:图片一和图片二尺寸大小必须相同,否则报错。  
    """
    #img = Image.blend(img1, img2, 0.5)
    # 6、保存或展示图片
    img1.show()
    展开全文
  • ImageFilter模块包含预定义...这个库的3.3.x版本提供下面一组预定义图像的增强过滤器: 1.BLUR 2.CONTOUR 3.DETALL 4.EDGE_ENHANCE 5.EDGE_EHANCE_MORE 6.EMBOSS 7.FIND_EDGES 8.SMOOTH 9.SMOOTH_MORE 10....

    ImageFilter模块包含预定义过滤器集的定义,可以与Image.filter()方法一起使用。

    这个库的3.3.x版本提供下面一组预定义图像的增强过滤器:

    1.BLUR
    2.CONTOUR
    3.DETALL
    4.EDGE_ENHANCE
    5.EDGE_EHANCE_MORE
    6.EMBOSS
    7.FIND_EDGES
    8.SMOOTH
    9.SMOOTH_MORE
    10.SHARPEN

    下面用几个简单的代码实现进行说明这几种情况

    1.BLUR
    模糊滤镜。会使图片较原先的模糊一些。

    from PIL import  Image,ImageFilter
    
    im=Image.open('1.jpg')
    im2=im.filter(ImageFilter.BLUR)#高斯模糊滤镜。
    im2.save('2.jpg','jpeg')

    实现的效果如下
    原图如下
    这里写图片描述
    之后生成的图如下
    这里写图片描述

    2.CONTOUR
    等高线。也就是轮廓滤波,将图像中的轮廓信息提取出来

    from PIL import  Image,ImageFilter
    
    im=Image.open('1.jpg')
    im2=im.filter(ImageFilter.CONTOUR)
    im2.save('2.jpg','jpeg')

    这里写图片描述

    3.DETALL
    细节。也就是细节增强滤波,它会显化图片中细节。

    from PIL import  Image,ImageFilter
    
    im=Image.open('1.jpg')
    im2=im.filter(ImageFilter.DETAIL)
    im2.save('3.jpg','jpeg')

    效果图(不过感觉效果貌似不是很明显?
    这里写图片描述

    4.EDGE_ENHANCE
    边缘强化。边缘增强滤波,突出、加强和改善图像中不同灰度区域之间的边界和轮廓的图像增强方法。经处理使得边界和边缘在图像上表现为图像灰度的突变,用以提高人眼识别能力。

    from PIL import  Image,ImageFilter
    
    im=Image.open('1.jpg')
    im2=im.filter(ImageFilter.EDGE_ENHANCE)
    im2.save('4.jpg','jpeg')

    这里写图片描述

    5.EDGE_ENHANCE_MORE
    边缘更强。深度边缘增强滤波,会使得图像中边缘部分更加明显。

    from PIL import  Image,ImageFilter
    
    im=Image.open('1.jpg')
    im2=im.filter(ImageFilter.EDGE_ENHANCE_MORE)
    im2.save('5.jpg','jpeg')

    这里写图片描述

    6.EMBOSS
    浮雕。浮雕滤波,会使图像呈现出浮雕效果。

    from PIL import  Image,ImageFilter
    
    im=Image.open('1.jpg')
    im2=im.filter(ImageFilter.EMBOSS)
    im2.save('6.jpg','jpeg')

    这里写图片描述

    7.FIND_EDGES
    边缘查找。寻找边缘信息的滤波,会找出图像中的边缘信息。

    from PIL import  Image,ImageFilter
    
    im=Image.open('1.jpg')
    im2=im.filter(ImageFilter.FIND_EDGES)
    im2.save('7.jpg','jpeg')

    这里写图片描述

    8.SMOOTH
    光滑。平滑滤波,突出图像的宽大区域、低频成分、主干部分或抑制图像噪声和干扰高频成分,使图像亮度平缓渐变,减小突变梯度,改善图像质量。

    from PIL import  Image,ImageFilter
    
    im=Image.open('1.jpg')
    im2=im.filter(ImageFilter.SMOOTH)
    im2.save('8.jpg','jpeg')

    这里写图片描述

    9.SMOOTH_MORE
    更加光滑。深度平滑滤波,会使得图像变得更加平滑。

    from PIL import  Image,ImageFilter
    
    im=Image.open('1.jpg')
    im2=im.filter(ImageFilter.SMOOTH_MORE)
    im2.save('9.jpg','jpeg')

    这里写图片描述

    10.SHARPEN
    锐化。锐化滤波,补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰。

    from PIL import  Image,ImageFilter
    
    im=Image.open('1.jpg')
    im2=im.filter(ImageFilter.SHARPEN)
    im2.save('10.jpg','jpeg')

    这里写图片描述

    官方文档:Pillow
    部分内容参考

    展开全文
  • Python图像处理

    2008-01-18 12:11:00
    Python图像处理 最近在做一件比较 evil 的事情——验证码识别,以此来学习一些新的技能。因为我是初学,对图像处理方面就不太了解了,欲要利吾事,必先利吾器,既然只是做一下实验,那用 Python 来作原型开发再...
    用Python做图像处理
    id="alimamaifrm" style="WIDTH: 750px; HEIGHT: 110px" border="0" name="alimamaifrm" marginwidth="0" marginheight="0" src="http://p.alimama.com/cpacode.php?t=A&pid=mm_10108440_0_0&w=750&h=110&rn=1&cn=3&ky=&cid=251602&bgc=FFFFFF&bdc=E6E6E6&tc=0000FF&dc=000000" frameborder="0" width="750" scrolling="no" height="110">
           最近在做一件比较 evil 的事情——验证码识别,以此来学习一些新的技能。因为我是初学,对图像处理方面就不太了解了,欲要利吾事,必先利吾器,既然只是做一下实验,那用 Python 来作原型开发再好不过了。在 Python 中,比较常用的图像处理库是 PIL(Python Image Library),当前版本是 1.1.6 ,用起来非常方便。大家可以在 http://www.pythonware.com/products/pil/index.htm 下载和学习。
           在这里,我主要是介绍一下做图像识别时可能会用到的一些 PIL 提供的功能,比如图像增强、还有滤波之类的。最后给出使用 Python 做图像处理与识别的优势与劣势。
    基本图像处理
           使用 PIL 之前需要 import Image 模块:
    import Image
           然后你就可以使用Image.open(‘xx.bmp’) 来打开一个位图文件进行处理了。打开文件你不用担心格式,也不用了解格式,无论什么格式,都只要把文件名丢给 Image.open 就可以了。真所谓 bmp、jpg、png、gif……,一个都不能少。
    img = Image.open(‘origin.png’)    # 得到一个图像的实例对象 img
    1原图
           图像处理中,最基本的就是色彩空间的转换。一般而言,我们的图像都是 RGB 色彩空间的,但在图像识别当中,我们可能需要转换图像到灰度图、二值图等不同的色彩空间。 PIL 在这方面也提供了极完备的支持,我们可以:
    new_img = img.convert(‘L’)
    把 img 转换为 256 级灰度图像, 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)
    怎么样,够丰富吧?其实如此之处,PIL 还有限制地支持以下几种比较少见的色彩模式:LA (L with alpha), RGBX (true colour with padding) and RGBa (true colour with premultiplied alpha)。
    下面看一下 mode 为 ‘1’、’L’、’P’时转换出来的图像:
    2 mode = '1'
    3 mode = 'L'
    4 mode = 'P'
    convert() 函数也接受另一个隐含参数 matrix,转换矩阵 matrix 是一个长度为4 或者16 tuple。下例是一个转换 RGB 空间到 CIE XYZ 空间的例子:
        rgb2xyz = (
            0.412453, 0.357580, 0.180423, 0,
            0.212671, 0.715160, 0.072169, 0,
            0.019334, 0.119193, 0.950227, 0 )
        out = im.convert("RGB", rgb2xyz)
           除了完备的色彩空间转换能力外, PIL 还提供了resize()、rotate()等函数以获得改变大小,旋转图片等几何变换能力,在图像识别方面,图像实例提供了一个 histogram() 方法来计算直方图,非常方便实用。
    图像增强
           图像增强通常用以图像识别之前的预处理,适当的图像增强能够使得识别过程达到事半功倍的效果。 PIL 在这方面提供了一个名为 ImageEnhance 的模块,提供了几种常见的图像增强方案:
    import ImageEnhance
    enhancer = ImageEnhance.Sharpness(image)
    for i in range(8):
        factor = i / 4.0
        enhancer.enhance(factor).show("Sharpness %f" % factor)
    上面的代码即是一个典型的使用 ImageEnhance 模块的例子。 Sharpness 是 ImageEnhance 模块的一个类,用以锐化图片。这一模块主要包含如下几个类:Color、Brightness、Contrast和Sharpness。它们都有一个共同的接口 .enhance(factor) ,接受一个浮点参数 factor,标示增强的比例。下面看看这四个类在不同的 factor 下的效果
    5 使用Color 进行色彩增强,factor 取值 [0, 4],步进 0.5
    6 用 Birghtness 增强亮度,factor取值[0,4],步进0.5
    7用 Contrast 增强对比度, factor 取值 [0,4],步进0.5
    8用 Sharpness 锐化图像,factor取值 [0,4],步进0.5
    图像 Filter
           PIL 在 Filter 方面的支持是非常完备的,除常见的模糊、浮雕、轮廓、边缘增强和平滑,还有中值滤波、ModeFilter等,简直方便到可以做自己做一个Photoshop。这些 Filter 都放置在 ImageFilter 模块中,ImageFilter主要包括两部分内容,一是内置的 Filter,如 BLUR、DETAIL等,另一部分是 Filter 函数,可以指定不同的参数获得不同的效果。示例如下:
    import ImageFilter
    im1 = im.filter(ImageFilter.BLUR)
    im2 = im.filter(ImageFilter.MinFilter(3))
    im3 = im.filter(ImageFilter.MinFilter()) # same as MinFilter(3)
    可以看到 ImageFilter 模块的使用非常简单,每一个 Filter 都只需要一行代码就可调用,开发效率非常高。
     
    9使用 BLUR
    10使用 CONTOUR
    11使用 DETAIL
    12使用 EMBOSS
    13使用 EDGE_ENHANCE
    14使用 EDGE_ENHANCE_MORE
    15使用 FIND_EDGES
    16使用 SHARPEN
    17使用 SMOOTH
    18使用 SMOOTH_MORE
           以上是几种内置的 Filter 的效果图,除此之外, ImageFilter 还提供了一些 Filter 函数,下面我们来看看这些可以通过参数改变行为的 Filter 的效果:
    19使用 Kernel(),参数:size = (3, 3), kernel = (0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5)
    20使用 MaxFilter,默认参数
    21使用 MinFilter,默认参数
    22使用 MedianFilter,默认参数
    23使用 ModeFilter,参数 size = 3
    24使用 RankFilter,参数 size = 3, rank = 3
    小结
           到此,对 PIL 的介绍就告一段落了。总的来说,对于图像处理和识别,PIL 内建了强大的支持,从各种增强算法到 Filter ,都让人无法怀疑使用 Python 的可行性。 Python唯一的劣势在于执行时间过慢,特别是当实现一些计算量大的算法时候,需要极强的耐心。我曾用 Hough Transform(霍夫变换)来查找图像中的直线,纯 Python 的实现处理一个 340 * 100 的图片也要花去数秒时间(P4 3.0G + 1G memory)。但使用 PIL 无需关注图像格式、内建的图像增强算法和 Filter 算法,这些优点使 Python 适合用于构造原型和进行实验,在这两方面Python 比 matlab 更加方便。商业的图像识别产品开发,可以考虑已经被 boost accepted的来自 adobe 的开源 C++ 库 gil,可以兼顾执行性能和开发效率。
    id="alimamaifrm" style="WIDTH: 750px; HEIGHT: 110px" border="0" name="alimamaifrm" marginwidth="0" marginheight="0" src="http://p.alimama.com/cpacode.php?t=A&pid=mm_10108440_0_0&w=750&h=110&rn=1&cn=3&ky=%CA%E9&cid=50000072&bgc=FFFFFF&bdc=E6E6E6&tc=0000FF&dc=000000" frameborder="0" width="750" scrolling="no" height="110">
    展开全文
  • Python数字图像处理

    2017-06-22 20:18:26
    转:宁静家园python数字图像处理(1):环境安装和配置python数字图像处理(2):图像的读取、显示与保存python数字图像处理3):图像像素的访问与裁剪python数字图像处理(4):图像数据类型及颜色空间转换python...
  • ②安装pytesser3:pip install pytesser3 ③安装pytesseract:pip install pytesseract ④安装autopy3: 先安装wheel:pip install wheel 下载autopy3-0.51.1-cp36-cp36m-win_amd64.whl【点击打...
  • 提到图像处理第一个想到的库就是PIL,全称Python Imaging Library Python图像处理类库,它提供了大量的图像操作,比如图像缩放,裁剪,贴图,模糊等等,很多时候它需要配合numpy库一起使用 1.open() 你可以使用...
  • 第 1 章 基本的图像操作和处理本章讲解操作和处理图像的基础知识,将通过大量...1.1 PIL:Python图像处理类库PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能,以及大量有用的基本图...
  • 本文主要介绍了一些简单易懂最常用的Python图像处理库 当今世界充满了各种数据,而图像是其中高的重要组成部分。然而,若想其有所应用,我们需要对这些图像进行处理。图像处理是分析和操纵数字图像的过程,旨在提高...
  • 该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。...
  • 前面一篇文章我讲解了Python图像量化、采样处理及图像金字塔。本文主要讲解图像傅里叶变换的相关内容,在数字图像处理中,有两个经典的变换被广泛应用——傅里叶变换和霍夫变换。其中,傅里叶变换主要是将时间域上的...
  • Python中进行图像处理可以使用的库有很多,本文主要介绍下面三个:OpenCV、PIL、 skimage。其中,OpenCV是图像处理中最强大的一个库,它的源代码是由C\C++写成的,所以原版的OpenCV可以与C、C++无缝结合。Python版...
  • 目录 ...初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
  • Python中的图像处理

    2018-03-03 22:27:15
    第 1 章 基本的图像操作和处理本章讲解操作和处理图像的基础知识,将通过大量...1.1 PIL:Python图像处理类库PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能,以及大量有用的基本图...
  • python 图像处理

    2018-06-19 14:51:01
    转自:点击打开链接第 1 章 基本的图像操作和处理本章讲解操作和处理图像的基础知识,将通过大量...1.1 PIL:Python图像处理类库PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能,以...
  • python数字图像处理-图像的基本结构和基础知识一、python实现BMP图像的读取和显示BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Windows系统中广泛使用的图像文件格式。...
  • 该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。...
  • python数字图像处理

    2018-06-15 15:32:40
    PIL(python2) Pillow(python3) opencv scikit-image matplotlib
1 2 3 4 5 ... 20
收藏数 116,236
精华内容 46,494