python图像数据处理,python实现图像处理
本文主要介绍python数字图像处理批处理实例的详细说明。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。
00-1010批量读取车身图片采集功能转换为批量保存灰度图像。
目录
有时候,我们不仅要处理一张图片,还要处理一批图片。这时候我们可以通过一个循环来执行处理,或者调用程序自带的图像集合来处理。
正文
skim age . io . image collection(load _ pattern,load_func=None)
该函数放在io模块中,有两个参数。第一个参数load_pattern表示图片组的路径,可以是str字符串。第二个参数load_func是一个回调函数,通过它我们可以批量处理图片。回调函数默认为imread(),也就是说这个函数默认是批量读取图片的。
先看一个例子:
将skimage.io作为io导入
从skimage导入数据目录
str=data_dir /*。巴布亚新几内亚
coll=io。图像集合(字符串)
打印(len(coll))
结果是25,这意味着系统自带了25张png样本图片,这些图片都已经被读出并放入图片集合coll中如果我们想显示其中一张图片,可以在它后面添加一行代码:
io.imshow(coll[10])
显示为:
图片集合函数
如果在一个文件夹中,我们存储了jpg和png两种图像,现在我们想把它们都读出来,该怎么办?
将skimage.io作为io导入
从skimage导入数据目录
str= d :/pic/* . jpg :d :/pic/*。巴布亚新几内亚
coll=io。图像集合(字符串)
打印(len(coll))
注意,这个地方‘d :/pic/’。jpg3360d3360/pic/*。“png”是两个字符串的组合,
第一个是 d:/pic/*。 jpg ,
第二个是 d:/pic/*。巴布亚新几内亚,
放在一起后,中间用冒号隔开,这样就可以读出文件夹d:/pic/中的jpg和png格式图片。
如果要读取其他地方存储的图片,也可以一起添加,但中间也用冒号隔开。
木卫一。ImageCollection()函数省略了第二个参数,即批量读取。如果我们不想批量读取,而是做其他批量操作,比如批量转换成灰度图像,该怎么办?
批量读取
那么你需要先定义一个函数,然后把这个函数作为第二个参数,比如:
从skimage导入数据_目录,io,颜色
def convert _灰色(f):
rgb=io.imread(f)
返回color.rgb2gray(rgb)
str=data_dir /*。巴布亚新几内亚
coll=io。ImageCollection(str,load_func=convert_gray)
io.imshow(coll[10])
这种批量操作对于视频处理极其有用,因为视频是一系列的图片组合。
从skimage导入数据_目录,io,颜色
航空级:
video_file=myvideo.avi
def __call__(自己,框架):
返回video_read(self.video_file,frame)
avi_load=AVILoader()
帧数=范围(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,colorcoll = io.ImageCollection(d:/pic/*.jpg)
mat=io.concatenate_images(coll)
使用concatenate_images(ic)函数的前提是读取的这些图片尺寸必须一致,否则会出错。我们看看图片连接前后的维度变化:
from skimage import data_dir,io,colorcoll = 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,colorimport 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数字图像批量处理的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。