图像的批处理

摘要:
第二个参数load_Func是一个回调函数,可用于批处理图像。您需要首先定义一个函数,然后将该函数用作第二个参数,例如fromskimageimportdata_dir,io,colordefconvert_gray:rgb=io.imreadreturncolor。rgb2graystr=data_dir+'/*.png'coll=io.ImageCollectionio。imshow结果如下图所示:此批处理操作对于视频处理非常有用,因为视频是一系列图片组合。我们还可以在对图像进行批处理操作后保存结果。

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

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

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

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])

结果如下图所示:

图像的批处理第1张

如果一个文件夹里,我们既存放了一些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])

结果如下图所示:

图像的批处理第2张

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

例:把系统自带的所有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])  #循环保存图片

结果如下所示:

图像的批处理第3张

免责声明:文章转载自《图像的批处理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇react 的虚拟dom动态加载与插件系统的初步实现(3):WinForm示例下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

关于Vue中img的src属性绑定的一些坑

不少人在vue的开发中遇到这样一个问题: img的src属性绑定url变量,然而图片加载失败。 大部分的情况中,是开发者使用了错误的写法,例如: ? 1 <img src="{{ imgUrl }}"/> 这样写肯定是不对的,正确的写法应该使用v-bind: ? 1 <img v-bind:src="imgUrl"/&g...

如何通过 WebP 自适应方案减少图片资源大小

前言 我们知道,理想的网页应该在 1 秒内打开,而在页面的整体大小中,图片往往是所占比例最大的一部分(大约占到 60% 以上,更多了解请点击),也可以参照如下图所示。优化图片不仅可以加快页面显示,还能降低移动网络的流量费用。原图产生的 PNG、JPEG、GIF 和 SVG 图片一般都有很大的压缩余地。下文将重点介绍一款图片新格式:WebP,从而揭开它神秘的...

SDWebImage缓存机制

存 取 删 路径 1.1 存 是在storeImage这个方法里: 将图片储存到内存和硬盘上 -(void)storeImage:(UIImage *)image recalculateFromImage:(BOOL)recalculate imageData:(NSData *)imageData forKey:(NSString *)key toDis...

GIF/PNG/JPG和WEBP/base64/apng图片优点和缺点整理

  GIF/PNG/JPG/WEBP/APNG都是属于位图(位图 ,务必区别于矢量图);   GIF/PNG和JPG这三种格式的图片被广泛应用在现今的互联网中,gif曾在过去互联网初期慢速的情况下几乎是做到了大一统的地位,而现如今随着互联网技术应用和硬件条件的提高,png和jpg格式的图片越来越多的被应用,gif昔日的辉煌一去不复, webp图片格式现在还...

解决网页无法显示PNG图片的问题

新建文本,将下面的文字复制保存为一reg文件,双击即可解决 Windows Registry Editor Version 5.00 ;PNG file association fix for Windows XP ;Created on May 17, 2007 by Ramesh Srinivasan [HKEY_CLASSES_ROOT\.PNG]...

使用批处理和MSBuild命令编译项目

第一步:先创建一个目录列表如图所示 bin:所有项目最终编译后DLL的输出目录 build:存放生成项目的bat批处理文件 src:存放项目源文件 第二部:src目录分别创建一个主项目和类库项目      创建多个解决方案的目的是针对大型项目使用减法及模块化的思想进行拆分。 示例:WPF主项目MainApp,类库项目MainApp.Common。Main...