skimage.io.imsave
时间: 2023-06-21 21:21:06 浏览: 229
skimage.io.imsave 是一个函数,用于将 NumPy 数组或 PIL.Image 对象保存为图像文件。该函数的语法为:
```python
skimage.io.imsave(fname, arr, plugin=None, check_contrast=True, **plugin_args)
```
其中,fname 是保存的文件名(包括路径和扩展名),arr 是要保存的图像数据,可以是 NumPy 数组或 PIL.Image 对象。plugin 是保存图像时使用的插件,默认为 None,自动选择插件。check_contrast 表示是否检查图像的对比度,默认为 True。plugin_args 是传递给插件的参数。
例如,要将 NumPy 数组保存为 JPEG 格式的图像文件,可以使用以下代码:
```python
from skimage import io
import numpy as np
# 生成一个随机数组
arr = np.random.rand(100, 100)
# 将数组保存为 JPEG 图像文件
io.imsave('test.jpg', arr)
```
相关问题
skimage.io.imsave保存png
要将 NumPy 数组或 PIL.Image 对象保存为 PNG 图像文件,可以使用 skimage.io.imsave 函数,并将文件名的扩展名设置为 ".png"。例如:
```python
from skimage import io
import numpy as np
# 生成一个随机数组
arr = np.random.rand(100, 100)
# 将数组保存为 PNG 图像文件
io.imsave('test.png', arr)
```
如果要将 PIL.Image 对象保存为 PNG 图像文件,可以先将其转换为 NumPy 数组,然后再使用 skimage.io.imsave 函数保存为 PNG 图像文件。例如:
```python
from skimage import io
from PIL import Image
# 打开图像文件
img = Image.open('test.jpg')
# 将 PIL.Image 对象转换为 NumPy 数组
arr = np.array(img)
# 将数组保存为 PNG 图像文件
io.imsave('test.png', arr)
```
注意,PNG 图像文件支持透明度通道,因此如果要保存带有透明度通道的图像,需要将数组的 dtype 设置为 np.uint8 或 np.uint16,并且通道数必须是 3 或 4。如果通道数是 3,则表示没有透明度通道;如果通道数是 4,则最后一个通道表示透明度通道。
skimage.io.imsave保存的Png像素范围
skimage.io.imsave 函数保存 PNG 图像文件时,如果数组的数据类型为浮点数,则会自动将像素值缩放到 0~1 的范围内,并将数据类型转换为 np.uint16。如果数组的数据类型为整数,则会将像素值直接保存为 uint8 或 uint16。
对于浮点数类型的数组,skimage.io.imsave 函数使用以下公式将像素值从浮点数范围映射到整数范围:
```
data_uint = (data * (2 ** bitdepth - 1)).astype(dtype, copy=False)
```
其中,data 是浮点数数组,bitdepth 是数据类型的位深度,dtype 是目标数据类型。
对于保存为 uint8(即位深度为 8)的 PNG 图像文件,像素值范围应该在 0~255 之间。对于保存为 uint16(即位深度为 16)的 PNG 图像文件,像素值范围应该在 0~65535 之间。如果像素值超出了这个范围,则会被截断到最大值或最小值。
阅读全文