本文共 1185 字,大约阅读时间需要 3 分钟。
对图像处理来说,numpy数组是非常重要的。图像由像素值网格构成,numpy数组更像列表,更适合用于科学计算。
当我们想将图像的亮度提升2倍,直接对列表进行乘法计算。
a = [1,2,3,4,5]b = 2*aprint(b)
结果如下。这个结果并不是我们想看到的,它仅仅是将同一列表进行两次连接。这也是为什么我们需要用的numpy数组进行图像计算。
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
import numpy as npc = np.array(a) #将列表转换为numpy数组d = 2*cprint(d)
[ 2 4 6 8 10]
例如,numpy数组相加,但注意进行相加时,数组的维数应该是一致的。即当进行图像相加时,最好保证两幅图像的阵列尺寸是一致的。
a = np.array([1,2,3,4,5])b = np.array([6,7,8])c = np.array([9,10,11,12,13])print(a+b) # not possible as the dimensions are different
结果如下。
Traceback (most recent call last): File "", line 1, in print(a+b)ValueError: operands could not be broadcast together with shapes (5,) (3,)
print(a+c) #possible
[10 12 14 16 18]
在图像处理中,常将numpy数据的类型设为float64。举个例子,如果你要对你的图像某一像素值进行除以2操作,该像素值为11,那么结果为5,出现舍入错误,而设为float类型,得到正确数据。当你不确定你的结果时,将数据类型设为float,避免输出结果错误。
from skimage import ioimg1 = io.imread('C:/Users/stacey/Pictures/lena.png')print(type(img1))a = np.ones_like(img1)
b = a[:2] #通过切片
column_sum = np.sum(a,axis=0) # 得到每一列的总值row_sum = np.sum(a,axis=1) #得到每一行的总值
transposed = a.T
转载地址:http://lqugn.baihongyu.com/