python图像数据处理,python实现图像处理

  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,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数字图像批量处理的资料请关注盛行IT软件开发工作室其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: