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基于mysql实现的简单队列以及跨进程锁实例详解
Jul 07 Python
python实现批量获取指定文件夹下的所有文件的厂商信息
Sep 28 Python
python通过yield实现数组全排列的方法
Mar 18 Python
python判断字符串是否包含子字符串的方法
Mar 24 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
Jan 20 Python
Python3.5内置模块之time与datetime模块用法实例分析
Apr 27 Python
Django 实现图片上传和显示过程详解
Jul 18 Python
Python及Pycharm安装方法图文教程
Aug 05 Python
python不相等的两个字符串的 if 条件判断为True详解
Mar 12 Python
基于python实现判断字符串是否数字算法
Jul 10 Python
python爬虫之爬取笔趣阁小说
Apr 22 Python
OpenCV-Python实现轮廓的特征值
Jun 09 Python
如何利用python实现Simhash算法
Jun 28 #Python
python数字图像处理:图像的绘制
python数字图像处理数据类型及颜色空间转换
python数据分析之单因素分析线性拟合及地理编码
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
You might like
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
2010/10/12 PHP
PHP优于Node.js的五大理由分享
2012/09/15 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
PHP使用数组实现矩阵数学运算的方法示例
2017/05/29 PHP
使用Json比用string返回数据更友好,也更面向对象一些
2011/09/13 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
2014/02/12 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
angular4自定义组件详解
2017/09/28 Javascript
js判断传入时间和当前时间大小实例(超简单)
2018/01/11 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
Python中实现switch功能实例解析
2018/01/11 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
pytorch: Parameter 的数据结构实例
2019/12/31 Python
Python3爬虫里关于Splash负载均衡配置详解
2020/07/10 Python
IBatis持久层技术
2016/07/18 面试题
2013英文求职信模板范文
2013/11/15 职场文书
客房主管岗位职责
2013/12/09 职场文书
学校万圣节活动方案
2014/02/13 职场文书
法律七进实施方案
2014/03/15 职场文书
先进典型发言材料
2014/12/30 职场文书
写给导师的自荐信
2015/03/06 职场文书
2016七夕情人节寄语
2015/12/04 职场文书