OpenCV笔记
OpenCV的Python API是基于Numpy的,它是Python的一种开源的数值计算扩展,用来存储和处理多维数组,其核心数据结构是ndarray。
1.构造二维的ndarray
首先了解如何构造二位的ndarry。构造一个二维数组(矩阵),需要知道的最基本信息是他的行数(高)和列数(宽)及其数据类型,如uint8、int32、float32、float64等。以构造一个2行3列全是0的float类型的二维数组为列,代码如下:
import numpy as np
result=np.zeros((2,3),np.float)
print type(result)
#
print result
# [[0. 0. 0.]
# [0. 0. 0.]]
print result[0]
# [0. 0. 0.]
print result[1]
# [0. 0. 0.]
print type(result[0])
#
构造一个2行3列全是1的整形矩阵,结果如下:
import numpy as np
result=np.ones((2,3),np.int)
print type(result)
print result
# [[1 1 1]
# [1 1 1]]
print result[0]
# [1 1 1]
print result[1]
# [1 1 1]
初始化一个整型矩阵:
import numpy as np
result=np.array([[1,2,3,4],[5,6,7,8]],dtype=int)
print type(result)
#
print result
# [[1 2 3 4][5 6 7 8]]
print result[0]
# [1 2 3 4]
print result[1]
# [5 6 7 8]
1.构造二维的ndarray
三维数组可以理解成每一个元素都是一个二维数组,以初始化一个222的整型数组为列,即可以把这个三维数组理解为两个2*2的二维数组,如下:
import numpy as np
result = np.array([[[1,2],[3,4]],[[11,12],[13,14]]],np.int)
print result
# [[[ 1 2]
# [ 3 4]]
#
# [[11 12]
# [13 14]]]
print result[0]
# [[1 2]
# [3 4]]
print result[1]
# [[11 12]
# [13 14]]
了解了ndarry的构造方法后,学习ndarry的成员变量和成员函数,以便获取它的基本信息和数值。
3.ndarry的成员变量
利用shape可以获得result的行数和列数,如下:
import numpy as np
result=np.array([[1,2,3,4],[5,6,7,8]],dtype=int)
print result.shape
# (2L, 4L)
利用dtype可以获得result的成员变量,如下:
import numpy as np
result=np.array([[1,2,3,4],[5,6,7,8]],dtype=int)
print result.dtype
# int32
3.访问二维ndarry中的值,以以下二维数组为例:
result =np.array([[1,2,3],[4,5,6]],np.int)
1.获取第2行第3列的值如
import numpy as np
result =np.array([[1,2,3],[4,5,6]],np.int)
print result[1,2]
#6
#同等于以下写法
print result[1][2]
#6
2.获取第1行全部值
import numpy as np
result =np.array([[1,2,3],[4,5,6]],np.int)
print result[0,:]
print result[0,::]
print result[0][::]
print result[0][:]
# [1 2 3]
# [1 2 3]
# [1 2 3]
# [1 2 3]
3.获取第2列所有值
import numpy as np
result =np.array([[1,2,3],[4,5,6]],np.int)
print result[:,1]
print result[::,1]
# [2 5]
# [2 5]
4.访问三维ndarry中的值,以以下三维数组为例:
result =np.array([[[1,1,1],[2,2,2],[3,3,3]],[[10,10,10],[20,20,20],[30,30,30]]],np.int)
1.获取三维数组中所有二维数组的第2列的值,如下:
import numpy as np
result =np.array([[[1,2,3],[4,5,6],[7,8,9]],[[11,12,13],[24,25,26],[37,38,39]]],np.int)
print result[:,:,1]
# [[ 2 5 8]
# [12 25 38]]
2.获取三维数组中第一个二维数组的全部的值
import numpy as np
result =np.array([[[1,2,3],[4,5,6],[7,8,9]],[[11,12,13],[24,25,26],[37,38,39]]],np.int)
print result[0,:,:]
# [[1 2 3]
# [4 5 6]
# [7 8 9]]