skimage.io#

讀取和儲存圖片與影片。

concatenate_images

將圖片集合中的所有圖片串連成一個陣列。

imread

從檔案載入圖片。

imread_collection

載入圖片集合。

imread_collection_wrapper

imsave

將圖片儲存到檔案。

load_sift

從外部產生的檔案讀取 SIFT 或 SURF 特徵。

load_surf

從外部產生的檔案讀取 SIFT 或 SURF 特徵。

pop

從共用圖片堆疊中彈出圖片。

push

將圖片推入共用圖片堆疊。

ImageCollection

載入和管理圖片檔案集合。

MultiImage

一個包含多幀 TIFF 圖片的所有幀的類別。


skimage.io.concatenate_images(ic)[原始碼]#

將圖片集合中的所有圖片串連成一個陣列。

參數:
ic圖片的可迭代物件

要串連的圖片。

回傳值:
array_catndarray

一個比 ic 中的圖片多一個維度的陣列。

引發:
ValueError

如果 ic 中的圖片形狀不一致。

註解

concatenate_images 接收任何包含圖片的可迭代物件,包括 ImageCollection 和 MultiImage,並回傳一個 NumPy 陣列。


skimage.io.imread(fname, as_gray=False, plugin=<已棄用>, **plugin_args)[原始碼]#

從檔案載入圖片。

參數:
fnamestr 或 pathlib.Path

圖片檔案名稱,例如 test.jpg 或 URL。

as_graybool,選用

如果為 True,則將彩色圖片轉換為灰階(64 位元浮點數)。已經是灰階格式的圖片不會被轉換。

回傳值:
img_arrayndarray

不同的顏色帶/通道儲存在第三個維度中,因此灰階圖片是 MxN,RGB 圖片是 MxNx3,RGBA 圖片是 MxNx4。

其他參數:
plugin_args已棄用

外掛程式基礎架構已棄用。

plugin已棄用

plugin 已棄用。

自版本 0.25 起已棄用。


skimage.io.imread_collection(load_pattern, conserve_memory=True, plugin=<已棄用>, **plugin_args)[原始碼]#

載入圖片集合。

參數:
load_patternstr 或 list

要載入的物件列表。這些通常是檔案名稱,但可能會因目前啟用的外掛程式而異。請參閱 ImageCollection 以了解此參數的預設行為。

conserve_memorybool,選用

如果為 True,則在特定時間內永遠不會將多個圖片保留在記憶體中。否則,圖片一旦載入就會被快取。

回傳值:
icImageCollection

圖片集合。

其他參數:
plugin_args已棄用

外掛程式基礎架構已棄用。

plugin已棄用

plugin 已棄用。

自版本 0.25 起已棄用。


skimage.io.imread_collection_wrapper(imread)[原始碼]#

skimage.io.imsave(fname, arr, plugin=<已棄用>, *, check_contrast=True, **plugin_args)[原始碼]#

將圖片儲存到檔案。

參數:
fnamestr 或 pathlib.Path

目標檔案名稱。

arr形狀為 (M,N) 或 (M,N,3) 或 (M,N,4) 的 ndarray

圖片資料。

check_contrastbool,選用

檢查對比度是否過低並列印警告(預設值:True)。

其他參數:
plugin_args已棄用

外掛程式基礎架構已棄用。

plugin已棄用

plugin 已棄用。

自版本 0.25 起已棄用。


skimage.io.load_sift(f)[原始碼]#

從外部產生的檔案讀取 SIFT 或 SURF 特徵。

此常式讀取來自 http://people.cs.ubc.ca/~lowe/keypoints/http://www.vision.ee.ethz.ch/~surf/ 的二進制公用程式產生的 SIFT 或 SURF 檔案。

此常式不會從圖片產生 SIFT/SURF 特徵。這些演算法受到專利保護。請改用 skimage.feature.CENSURE

參數:
filelike字串或開啟的檔案

來自 http://people.cs.ubc.ca/~lowe/keypoints/http://www.vision.ee.ethz.ch/~surf/ 的特徵偵測器產生的輸入檔案。

mode{‘SIFT’, ‘SURF’},選用

用於產生 filelike 的描述子種類。

回傳值:
data具有欄位的記錄陣列
  • row: int

    特徵的列位置

  • column: int

    特徵的欄位置

  • scale: float

    特徵縮放

  • orientation: float

    特徵方向

  • data: array

    特徵值


skimage.io.load_surf(f)[原始碼]#

從外部產生的檔案讀取 SIFT 或 SURF 特徵。

此常式讀取來自 http://people.cs.ubc.ca/~lowe/keypoints/http://www.vision.ee.ethz.ch/~surf/ 的二進制公用程式產生的 SIFT 或 SURF 檔案。

此常式不會從圖片產生 SIFT/SURF 特徵。這些演算法受到專利保護。請改用 skimage.feature.CENSURE

參數:
filelike字串或開啟的檔案

來自 http://people.cs.ubc.ca/~lowe/keypoints/http://www.vision.ee.ethz.ch/~surf/ 的特徵偵測器產生的輸入檔案。

mode{‘SIFT’, ‘SURF’},選用

用於產生 filelike 的描述子種類。

回傳值:
data具有欄位的記錄陣列
  • row: int

    特徵的列位置

  • column: int

    特徵的欄位置

  • scale: float

    特徵縮放

  • orientation: float

    特徵方向

  • data: array

    特徵值


skimage.io.pop()[原始碼]#

從共用圖片堆疊中彈出圖片。

回傳值:
imgndarray

從堆疊中彈出的圖片。


skimage.io.push(img)[原始碼]#

將圖片推入共用圖片堆疊。

參數:
imgndarray

要推入的圖片。

class skimage.io.ImageCollection(load_pattern, conserve_memory=True, load_func=None, **load_func_kwargs)[原始碼]#

基底:object

載入和管理圖片檔案集合。

參數:
load_patternstr 或 str 的列表

要載入的模式字串或字串列表。檔案名稱路徑可以是絕對或相對的。

conserve_memorybool,選用

如果為 True,則 skimage.io.ImageCollection 在特定時間內不會將多個圖片保留在記憶體中。否則,圖片一旦載入就會被快取。

屬性:
filesstr 的列表

如果為 load_pattern 提供模式字串,則此屬性會儲存展開的檔案列表。否則,此屬性等於 load_pattern

其他參數:
load_func可呼叫物件

預設為 imread。請參閱下面的註解。

**load_func_kwargsdict

任何其他關鍵字引數都會傳遞到 load_func

註解

請注意,檔案永遠會以字母順序回傳。另請注意,切片會回傳新的 skimage.io.ImageCollection而不是資料的檢視。

影像集合的影像載入可以透過 load_func 進行客製化。對於一個影像集合 icic[5] 會呼叫 load_func(load_pattern[5]) 來載入該影像。

例如,這裡有一個影像集合,針對提供的每個影片,載入每隔一幀的畫面

import imageio.v3 as iio3
import itertools

def vidread_step(f, step):
    vid = iio3.imiter(f)
    return list(itertools.islice(vid, None, None, step)

video_file = 'no_time_for_that_tiny.gif'
ic = ImageCollection(video_file, load_func=vidread_step, step=2)

ic  # is an ImageCollection object of length 1 because 1 video is provided

x = ic[0]
x[5]  # the 10th frame of the first video

或者,如果提供了 load_funcload_pattern 是一個序列,則會建立一個對應長度的 skimage.io.ImageCollection,並且會呼叫 load_func 並以 load_pattern 中匹配的元素作為第一個引數來載入個別的影像。在這種情況下,序列中的元素不需要是現有檔案的名稱(或任何字串)。例如,要從一個影片建立一個包含 500 張影像的 skimage.io.ImageCollection

class FrameReader:
    def __init__ (self, f):
        self.f = f
    def __call__ (self, index):
        return iio3.imread(self.f, index=index)

ic = ImageCollection(range(500), load_func=FrameReader('movie.mp4'))

ic  # is an ImageCollection object of length 500

load_func 的另一個用途是將所有影像轉換為 uint8

def imread_convert(f):
    return imread(f).astype(np.uint8)

ic = ImageCollection('/tmp/*.png', load_func=imread_convert)

範例

>>> import imageio.v3 as iio3
>>> import skimage.io as io

# 你的影像所在位置 >>> data_dir = os.path.join(os.path.dirname(__file__), ‘../data’)

>>> coll = io.ImageCollection(data_dir + '/chess*.png')
>>> len(coll)
2
>>> coll[0].shape
(200, 200)
>>> image_col = io.ImageCollection([f'{data_dir}/*.png', '{data_dir}/*.jpg'])
>>> class MultiReader:
...     def __init__ (self, f):
...         self.f = f
...     def __call__ (self, index):
...         return iio3.imread(self.f, index=index)
...
>>> filename = data_dir + '/no_time_for_that_tiny.gif'
>>> ic = io.ImageCollection(range(24), load_func=MultiReader(filename))
>>> len(image_col)
23
>>> isinstance(ic[0], np.ndarray)
True
__init__(load_pattern, conserve_memory=True, load_func=None, **load_func_kwargs)[來源]#

載入並管理影像集合。

concatenate()[來源]#

將集合中的所有影像串聯成一個陣列。

回傳值:
arnp.ndarray

一個比 self 中的影像多一個維度的陣列。

引發:
ValueError

如果 skimage.io.ImageCollection 中的影像沒有相同的形狀。

property conserve_memory#
property files#
reload(n=None)[來源]#

清除影像快取。

參數:
nNone 或 int

僅清除此影像的快取。預設情況下,會清除整個快取。

class skimage.io.MultiImage(filename, conserve_memory=True, dtype=None, **imread_kwargs)[來源]#

基底:ImageCollection

一個包含多幀 TIFF 圖片的所有幀的類別。

參數:
load_patternstr 或 str 的列表

要載入的 glob 模式或檔案名稱。路徑可以是絕對或相對路徑。

conserve_memorybool,選用

是否僅快取單一影像的幀來節省記憶體。預設值為 True。

註解

MultiImage 會傳回影像資料陣列的列表。在這方面,它與 ImageCollection 非常相似,但兩者在處理多幀影像的方式上有所不同。

對於一個包含 N 個大小為 WxH 的幀的 TIFF 影像,MultiImage 會將該影像的所有幀儲存為列表中形狀為 (N, W, H) 的單一元素。ImageCollection 則會建立 N 個形狀為 (W, H) 的元素。

對於動畫 GIF 影像,MultiImage 只會讀取第一幀,而 ImageCollection 預設會讀取所有幀。

範例

# 你的影像所在位置 >>> data_dir = os.path.join(os.path.dirname(__file__), ‘../data’)

>>> multipage_tiff = data_dir + '/multipage.tif'
>>> multi_img = MultiImage(multipage_tiff)
>>> len(multi_img)  # multi_img contains one element
1
>>> multi_img[0].shape  # this element is a two-frame image of shape:
(2, 15, 10)
>>> image_col = ImageCollection(multipage_tiff)
>>> len(image_col)  # image_col contains two elements
2
>>> for frame in image_col:
...     print(frame.shape)  # each element is a frame of shape (15, 10)
...
(15, 10)
(15, 10)
__init__(filename, conserve_memory=True, dtype=None, **imread_kwargs)[來源]#

載入多影像。

concatenate()[來源]#

將集合中的所有影像串聯成一個陣列。

回傳值:
arnp.ndarray

一個比 self 中的影像多一個維度的陣列。

引發:
ValueError

如果 skimage.io.ImageCollection 中的影像沒有相同的形狀。

property conserve_memory#
property filename#
property files#
reload(n=None)[來源]#

清除影像快取。

參數:
nNone 或 int

僅清除此影像的快取。預設情況下,會清除整個快取。