zoukankan      html  css  js  c++  java
  • 图像的批处理

    有些时候,我们不仅要对一张图片进行处理,可能还会对一批图片处理,有如下两种方法:

    • 通过循环来执行处理
    • 调用程序自带的图片集合来处理

    对于第二种方法,用到的图片集合函数为

    skimage.io.ImageCollection(load_pattern,load_func=None)

    这个函数是放在io模块内的,带两个参数:

    • 第一个参数load_pattern, 表示图片组的路径,可以是一个str字符串。
    • 第二个参数load_func是一个回调函数,我们对图片进行批量处理就可以通过这个回调函数实现。回调函数默认为imread(),即默认这个函数是批量读取图片。

    举个例子:

    import skimage.io as io
    from skimage import data_dir
    str=data_dir + '/*.png'
    coll = io.ImageCollection(str)
    print(len(coll))

    显示结果为27, 说明系统自带了27张png的示例图片,这些图片都读取了出来,放在图片集合coll里。如果我们想显示其中一张图片,则可以在后加上一行代码:

    io.imshow(coll[10])

    结果如下图所示:

    如果一个文件夹里,我们既存放了一些jpg格式的图片,又存放了一些png格式的图片,现在想把它们全部读取出来,该怎么做呢?

    import skimage.io as io
    from skimage import data_dir
    str='d:/pic/*.jpg;d:/pic/*.png'
    coll = io.ImageCollection(str)
    print(len(coll))

    结果为:5

    注意这个地方'd:/pic/*.jpg;d:/pic/*.png' ,是两个字符串合在一起的,第一个是'd:/pic/*.jpg', 第二个是'd:/pic/*.png' ,合在一起后,中间用分号来隔开,这样就可以把d:/pic/文件夹下的jpg和png格式的图片都读取出来。如果还想读取存放在其它地方的图片,也可以一并加进去,只是中间同样用分号来隔开。

    io.ImageCollection()这个函数省略第二个参数,就是批量读取。如果我们不是想批量读取,而是其它批量操作,如批量转换为灰度图,那又该怎么做呢?那就需要先定义一个函数,然后将这个函数作为第二个参数,如:

    from skimage import data_dir,io,color
    
    def convert_gray(f):
        rgb=io.imread(f)
        return color.rgb2gray(rgb)
        
    str=data_dir+'/*.png'
    coll = io.ImageCollection(str,load_func=convert_gray)
    io.imshow(coll[10])

    结果如下图所示:

    这种批量操作对视频处理是极其有用的,因为视频就是一系列的图片组合。我们也可以对图片进行批量操作后,想把操作后的结果保存起来。

    例:把系统自带的所有png示例图片,全部转换成256*256的jpg格式灰度图,保存在d:/data/文件夹下

    注解:改变图片的大小,我们可以使用tranform模块的resize()函数

    from skimage import data_dir,io,transform,color
    import numpy as np
    
    def convert_gray(f):
         rgb=io.imread(f)    #依次读取rgb图片
         gray=color.rgb2gray(rgb)   #将rgb图片转换成灰度图
         dst=transform.resize(gray,(256,256))  #将灰度图片大小转换为256*256
         return dst
        
    str=data_dir+'/*.png'
    coll = io.ImageCollection(str,load_func=convert_gray)
    for i in range(len(coll)):
        io.imsave('d:/data/'+np.str(i)+'.jpg',coll[i])  #循环保存图片

    结果如下所示:

  • 相关阅读:
    数据库结构中的"树"
    Jquery学习
    cms系统也不复杂
    让你的博客园变灰
    IList对象排序方法
    计算机简介(二)
    在同一台电脑上使用U盘时快时慢的解决方法
    计算机简介
    合并排序
    javascript小结
  • 原文地址:https://www.cnblogs.com/Terrypython/p/9947394.html
Copyright © 2011-2022 走看看