python数字图像处理之图像的批量处理


Posted in Python onJune 28, 2022

正文

有些时候,我们不仅要对一张图片进行处理,可能还会对一批图片处理。这时候,我们可以通过循环来执行处理,也可以调用程序自带的图片集合来处理。

图片集合函数

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

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

io.imshow(coll[10])

显示为:

python数字图像处理之图像的批量处理

批量读取

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

注意这个地方'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])

python数字图像处理之图像的批量处理

这种批量操作对视频处理是极其有用的,因为视频就是一系列的图片组合

from skimage import data_dir,io,color
class AVILoader:
    video_file = 'myvideo.avi'
    def __call__(self, frame):
        return video_read(self.video_file, frame)
avi_load = AVILoader()
frames = range(0, 1000, 10) # 0, 10, 20, ...
ic =io.ImageCollection(frames, load_func=avi_load)

这段代码的意思,就是将myvideo.avi这个视频中每隔10帧的图片读取出来,放在图片集合中。

得到图片集合以后,我们还可以将这些图片连接起来,构成一个维度更高的数组,连接图片的函数为:

skimage.io.concatenate_images(ic)

带一个参数,就是以上的图片集合,如:

from skimage import data_dir,io,color
coll = io.ImageCollection('d:/pic/*.jpg')
mat=io.concatenate_images(coll)

使用concatenate_images(ic)函数的前提是读取的这些图片尺寸必须一致,否则会出错。我们看看图片连接前后的维度变化:

from skimage import data_dir,io,color
coll = io.ImageCollection('d:/pic/*.jpg')
print(len(coll))      #连接的图片数量
print(coll[0].shape)   #连接前的图片尺寸,所有的都一样
mat=io.concatenate_images(coll)
print(mat.shape)  #连接后的数组尺寸

显示结果:

2
(870, 580, 3)
(2, 870, 580, 3)

可以看到,将2个3维数组,连接成了一个4维数组

如果我们对图片进行批量操作后,想把操作后的结果保存起来,也是可以办到的。

批量保存

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

 结果:

python数字图像处理之图像的批量处理

以上就是python数字图像处理之图像的批量处理的详细内容,更多关于python数字图像批量处理的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python3序列化与反序列化用法实例
May 26 Python
Python抽象类的新写法
Jun 18 Python
Python实现读取及写入csv文件的方法示例
Jan 12 Python
python实现Decorator模式实例代码
Feb 09 Python
python 将list转成字符串,中间用符号分隔的方法
Oct 23 Python
python绘制简单彩虹图
Nov 19 Python
python执行CMD指令,并获取返回的方法
Dec 19 Python
Python是怎样处理json模块的
Jul 16 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
python基于socket模拟实现ssh远程执行命令
Dec 05 Python
python中HTMLParser模块知识点总结
Jan 25 Python
python标准库ElementTree处理xml
May 20 Python
如何利用python实现Simhash算法
Jun 28 #Python
python数字图像处理:图像的绘制
python数字图像处理数据类型及颜色空间转换
python数据分析之单因素分析线性拟合及地理编码
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
You might like
PHP 字符串分割和比较
2009/10/06 PHP
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
利用Laravel事件系统如何实现登录日志的记录详解
2017/05/20 PHP
PHP接入支付宝接口失效流程详解
2020/11/10 PHP
Javascript学习笔记一 之 数据类型
2010/12/15 Javascript
javascript写的简单的计算器,内容很多,方法实用,推荐
2011/12/29 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
2013/11/30 Javascript
avalonjs实现仿微博的图片拖动特效
2015/05/06 Javascript
Bootstrap基本模板的使用和理解1
2016/12/14 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
2017/06/08 jQuery
Vue实现购物车场景下的应用
2017/11/27 Javascript
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
[02:20]DOTA2亚洲邀请赛 IG战队出场宣传片
2015/02/07 DOTA
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
[01:02:54]完美世界DOTA2联赛PWL S2 FTD vs GXR 第一场 11.22
2020/11/26 DOTA
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
python去除所有html标签的方法
2015/05/05 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
Python自动抢红包教程详解
2019/06/11 Python
python nmap实现端口扫描器教程
2020/05/28 Python
python return逻辑判断表达式实现解析
2019/12/02 Python
python drf各类组件的用法和作用
2021/01/12 Python
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
CSS3实现网站商品展示效果图
2020/01/18 HTML / CSS
美国网上订购鲜花:FTD
2016/09/23 全球购物
乔丹诺(Giordano)酒庄德国官网:找到最好的意大利葡萄酒
2017/12/28 全球购物
微软瑞士官方网站:Microsoft瑞士
2018/04/20 全球购物
学生励志演讲稿
2014/01/06 职场文书
小学国庆节活动方案
2014/02/11 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
基于Python的EasyGUI学习实践
2021/05/07 Python
Python中使用ipython的详细教程
2021/06/22 Python