<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
有些時候,我們不僅要對一張圖片進行處理,可能還會對一批圖片處理。這時候,我們可以通過迴圈來執行處理,也可以呼叫程式自帶的圖片集合來處理。
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])
顯示為:
如果一個資料夾裡,我們既存放了一些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])
這種批次操作對視訊處理是極其有用的,因為視訊就是一系列的圖片組合
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數位影像批次處理的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45