skimage
提供了 io
模块,顾名思义,这个模块是用来图片输入输出操作的。
为了方便练习,skimage
提供一个 data
模块,里面自带了一些示例图片可以直接使用。
导入 skimage
模块:
from skimage import io
img=io.imread('/data/demo/demo_skimg_01.png')
显示图片使用 skimage.io.imshow(arr)
函数,带一个参数,
表示需要显示的 arr
数组(读取的图片以 numpy
数组形式计算)。
io.imshow(img)
/tmp/ipykernel_93/1344939353.py:1: FutureWarning: `imshow` is deprecated since version 0.25 and will be removed in version 0.27. Please use `matplotlib`, `napari`, etc. to visualize images. io.imshow(img)
<matplotlib.image.AxesImage at 0x7fd1ad260f50>
读取单张灰度图片,使用 skimage.io.imread(fname,as_grey=True)
函数,
第一个参数为图片路径,第二个参数为 as_grey
, bool
型值,默认为 False
。
img=io.imread('/data/demo/demo_skimg_01.png',as_gray=True)
io.imshow(img)
/tmp/ipykernel_93/3222358775.py:2: FutureWarning: `imshow` is deprecated since version 0.25 and will be removed in version 0.27. Please use `matplotlib`, `napari`, etc. to visualize images. io.imshow(img)
<matplotlib.image.AxesImage at 0x7fd1ad2ea150>
from skimage import io,data
img=data.coffee()
io.imshow(img)
/tmp/ipykernel_93/750203247.py:3: FutureWarning: `imshow` is deprecated since version 0.25 and will be removed in version 0.27. Please use `matplotlib`, `napari`, etc. to visualize images. io.imshow(img)
<matplotlib.image.AxesImage at 0x7fd1ac12c8f0>
图片名对应的就是函数名,如 camera 图片对应的函数名为 camera()
。
这些示例图片存放在 skimage
的安装目录下面,
路径名称为 data_dir
:
from skimage import data_dir
data_dir
'/opt/conda/lib/python3.12/site-packages/skimage/data'
也就是说,下面两行读取图片的代码效果是一样的:
img1=data.coffee()
img2=io.imread(data_dir+'/coffee.png')
上面两行代码,都是读取 coffee 图片。
from skimage import io,data
img=data.chelsea()
io.imshow(img)
io.imsave('xx_demo_skimg_cat.jpg',img)
/tmp/ipykernel_93/1659145912.py:3: FutureWarning: `imshow` is deprecated since version 0.25 and will be removed in version 0.27. Please use `matplotlib`, `napari`, etc. to visualize images. io.imshow(img)
保存图片的同时也起到了转换格式的作用。如果读取时图片格式为 jpg
图片,
保存为 png
格式,则将图片从 jpg
图片转换为 png
图片并保存。
显示类型:
img=data.chelsea()
print(type(img))
<class 'numpy.ndarray'>
显示尺寸:
print(img.shape)
(300, 451, 3)
图片宽度:
print(img.shape[0])
300
图片高度:
print(img.shape[1])
451
图片通道数:
print(img.shape[2])
3
显示总像素个数:
print(img.size)
405900
最大像素值:
print(img.max())
231
最小像素值:
print(img.min())
0
像素平均值:
print(img.mean())
115.30514166050752