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 相关文章推荐
python中列表元素连接方法join用法实例
Apr 07 Python
简单介绍Python中的JSON模块
Apr 08 Python
简单介绍Python中的try和finally和with方法
May 05 Python
python3.4.3下逐行读入txt文本并去重的方法
Apr 29 Python
Python  Django 母版和继承解析
Aug 09 Python
Python 中的 global 标识对变量作用域的影响
Aug 12 Python
python修改文件内容的3种方法详解
Nov 15 Python
使用python 将图片复制到系统剪贴中
Dec 13 Python
django商品分类及商品数据建模实例详解
Jan 03 Python
Tensorflow Summary用法学习笔记
Jan 10 Python
Django如何使用redis作为缓存
May 21 Python
Python常用数据分析模块原理解析
Jul 20 Python
如何利用python实现Simhash算法
Jun 28 #Python
python数字图像处理:图像的绘制
python数字图像处理数据类型及颜色空间转换
python数据分析之单因素分析线性拟合及地理编码
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
You might like
php中二维数组排序问题方法详解
2015/08/28 PHP
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
javascript 闭包疑问
2010/12/30 Javascript
使用javascipt---实现二分查找法
2013/04/10 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
D3.js中强制异步文件读取同步的几种方法
2017/02/06 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
2019/05/07 Javascript
微信小程序如何实现点击图片放大功能
2020/01/21 Javascript
js实现数字跳动到指定数字
2020/08/25 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
wxpython 学习笔记 第一天
2009/03/16 Python
python获取本机mac地址和ip地址的方法
2015/04/29 Python
详解Swift中属性的声明与作用
2016/06/30 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
python logging日志模块原理及操作解析
2019/10/12 Python
使用Python的Turtle绘制哆啦A梦实例
2019/11/21 Python
selenium判断元素是否存在的两种方法小结
2020/12/07 Python
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
会计主管岗位职责
2014/01/03 职场文书
幼儿园区域活动总结
2014/05/08 职场文书
应届大专生求职信
2014/06/26 职场文书
读群众路线的心得体会
2014/09/03 职场文书
2014年共青团工作总结
2014/12/10 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
MySQL七种JOIN类型小结
2021/10/24 MySQL
springboot 全局异常处理和统一响应对象的处理方式
2022/06/28 Java/Android