Python使用技巧(十一):图像处理skimage模块库的安装与使用

一、介绍

skimage包的全称是scikit-image SciKit (toolkit for SciPy) ,它对scipy.ndimage进行了扩展,提供了更多的图片处理功能。它是由python语言编写的,由scipy 社区开发和维护。skimage包由许多的子模块组成,各个子模块提供不同的功能。主要子模块列表如下:
Python使用技巧(十一):图像处理skimage模块库的安装与使用_第1张图片
当要使用对应的模块中功能函数时,需要通过import导入对应的子模块即可, 若要导入多个子模块时,子模块之间用逗号隔开,如下:

from skimage import io, data, feature

二、安装命令

python -m pip install --index-url https://pypi.douban.com/simple Scikit-Image
python -m pip install --index-url https://pypi.douban.com/simple Image
或者:pip install -U scikit-image
Python使用技巧(十一):图像处理skimage模块库的安装与使用_第2张图片

或者:conda install -c conda-forge scikit-image
捆绑包为:

imageio-2.9.0        | 3.1 MB    | ##################### | 100% 
dask-core-2020.12.0  | 669 KB    | ##################### | 100%  
pyopenssl-20.0.1     | 48 KB     | ##################### | 100%  
scikit-image-0.18.0  | 10.8 MB   | ##################### | 100%  
xz-5.2.5             | 211 KB    | ##################### | 100%  
cycler-0.10.0        | 9 KB      | ##################### | 100%  
toolz-0.11.1         | 46 KB     | ##################### | 100%  
urllib3-1.25.11      | 93 KB     | ##################### | 100%  
cryptography-3.3.1   | 594 KB    | ##################### | 100%  
tifffile-2019.7.26.2 | 254 KB    | ##################### | 100%  
scipy-1.5.3          | 21.9 MB   | ##################### | 100%  
networkx-2.5         | 1.2 MB    | ##################### | 100% 
idna-2.10            | 52 KB     | ##################### | 100% 
lz4-c-1.9.2          | 279 KB    | ##################### | 100% 
pycparser-2.20       | 94 KB     | ##################### | 100% 
zstd-1.4.5           | 887 KB    | ##################### | 100% 
ca-certificates-2020 | 173 KB    | ##################### | 100%  
tk-8.6.10            | 3.2 MB    | ##################### | 100%  
cffi-1.14.4          | 226 KB    | ##################### | 100% 
pathlib-1.0.1        | 4 KB      | ##################### | 100%  
olefile-0.46         | 32 KB     | ##################### | 100%  
kiwisolver-1.3.1     | 58 KB     | ##################### | 100%  
imagecodecs-lite-201 | 151 KB    | ##################### | 100%  
matplotlib-base-3.3. | 6.7 MB    | ##################### | 100%  
chardet-3.0.4        | 190 KB    | ##################### | 100%  
freetype-2.10.4      | 493 KB    | ##################### | 100%  
pooch-1.3.0          | 40 KB     | ##################### | 100%  
pywavelets-1.1.1     | 4.3 MB    | ##################### | 100% 
openssl-1.1.1i       | 5.8 MB    | ##################### | 100%  
libcblas-3.8.0       | 3.9 MB    | ##################### | 100%  
win_inet_pton-1.1.0  | 8 KB      | ##################### | 100%  
pyparsing-2.4.7      | 60 KB     | ##################### | 100%  
yaml-0.2.5           | 61 KB     | ##################### | 100%  
cytoolz-0.11.0       | 314 KB    | ##################### | 100%  
enum34-1.1.10        | 4 KB      | ##################### | 100%  
certifi-2020.12.5    | 143 KB    | ##################### | 100%  
pysocks-1.7.1        | 28 KB     | ##################### | 100%  
appdirs-1.4.4        | 13 KB     | ##################### | 100%  
packaging-20.8       | 34 KB     | ##################### | 100%  
cloudpickle-1.6.0    | 22 KB     | ##################### | 100%  
brotlipy-0.7.0       | 368 KB    | ##################### | 100%  
pyyaml-5.3.1         | 159 KB    | ##################### | 100%  
requests-2.25.0      | 51 KB     | ##################### | 100% 

注意:该命令在一定程度上捆绑了一些匹配包,可以一次性安装。
其他参考:手动下载python模块库网站

三、案例分析

测试图片:
Python使用技巧(十一):图像处理skimage模块库的安装与使用_第3张图片

测试源码:

#coding=utf-8

# from PIL import Image, ImageFont
from PIL import Image as img
import os
from matplotlib import pyplot as plot
from skimage import io,transform
#Image和skimage读图片
img_file1 = img.open('./mesc.jpg')
img_file2 = io.imread('./mesc.jpg')


#得到像素:
print(img_file1.getpixel((50,100)))  #((w,h)) 返回: (253, 251, 239) tuple
print(img_file2[50][100])  #[h][w]

测试结果:

(172, 116, 117)
[86 60 71]

Process finished with exit code 0

再次测试梅西:随机添加一些噪声

#coding=utf-8

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
img=np.array(Image.open('./mesc.jpg'))
# plt.figure("mess")
# plt.imshow(img)
# plt.axis('off')
# plt.show()

print(img.shape)
print(img.dtype)
print(img.size)
print(type(img))

# 随机生成5000个随机噪声点
rows, cols, dims = img.shape
for i in range(5000):
    x = np.random.randint(0, rows)
    y = np.random.randint(0, cols)
    img[x, y, :] = 255

plt.figure("mess")
plt.imshow(img)
plt.axis('off')
plt.show()

执行结果:
Python使用技巧(十一):图像处理skimage模块库的安装与使用_第4张图片
简单说明图像参数:

print(type(img))
print(img)

输出结果:

(460, 690, 3)
uint8
952200
<class 'numpy.ndarray'>
[[[132 125 132]
  [133 126 133]
  [135 128 135]
  ...
  [190 130 138]
  [193 133 141]
  [193 133 141]]

 [[136 129 136]
  [137 130 137]
  [137 130 137]
  ...
  [196 133 141]
  [197 134 142]
  [197 134 142]]

 [[143 137 141]
  [143 137 141]
  [141 135 139]
  ...
  [206 137 142]
  [207 136 142]
  [207 136 142]]

 ...

 [[146 116 105]
  [146 116 105]
  [145 116 102]
  ...
  [166 112 100]
  [167 107  97]
  [167 107  97]]

 [[145 117 105]
  [145 117 105]
  [145 117 105]
  ...
  [167 117 106]
  [168 113 106]
  [168 113 106]]

 [[145 118 107]
  [144 117 106]
  [145 117 106]
  ...
  [168 120 108]
  [169 116 108]
  [169 116 108]]]

Process finished with exit code 0

变量以数字矩阵的形式来存储图像。如你所见,矩阵的形状为460 x 690。矩阵里的这些数字称为像素值,它们表示图像中像素的强度。

参考文献

引用文献1
引用文献2
引用文献3

你可能感兴趣的:(python使用技巧,python)