基础知识
一、numpy
1.简介
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
- 一个强大的N维数组对象 ndarray
- 广播功能函数
- 整合 C/C++/Fortran 代码的工具
- 线性代数、傅里叶变换、随机数生成等功能
2.数组创建
数组类型
Numpy中的数组的使用和python中列表非常类似,区别如下:
- 列表可以存储多种数据类型,numpy只能存储相同数据类型。
- 数组可以是多维的,当数据类型是数值类型时,相当于线性代数中的矩阵,是可以进行相互间的运算的。
三个属性
- 数据类型 dtype
- 维度 ndim 有几个方括号,就有几个维度
- 形状 shape
创建数组
1 2 3 4 5 6 7 8 9 10 11 12 13
| import numpy as np
a=np.array([1,2,3,4])
b=np.arange(2,21,2) c=np.random.random((2,2)) d=np.random.randint(4,8,(2,2,2)) e=np.zeros((2,2)) f=np.ones((3,3)) g=np.full((3,3),8) h=np.eye(3)
i=np.ones((3,3),dtype=uint8)
|
数组数据类型
类型 |
解释 |
bool_ |
布尔型数据类型(True 或者 False) |
int_ |
默认的整数类型(类似于 C 语言中的 long,int32 或 int64) |
intc |
与 C 的 int 类型一样,一般是 int32 或 int 64 |
intp |
用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64) |
int8 |
字节(-128 to 127) |
int16 |
整数(-32768 to 32767) |
int32 |
整数(-2147483648 to 2147483647) |
int64 |
整数(-9223372036854775808 to 9223372036854775807) |
uint8 |
无符号整数(0 to 255) |
uint16 |
无符号整数(0 to 65535) |
uint32 |
无符号整数(0 to 4294967295) |
uint64 |
无符号整数(0 to 18446744073709551615) |
float_ |
float64 类型的简写 |
float16 |
半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位 |
float32 |
单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位 |
float64 |
双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位 |
complex_ |
complex128 类型的简写,即 128 位复数 |
complex64 |
复数,表示双 32 位浮点数(实数部分和虚数部分) |
complex128 |
复数,表示双 64 位浮点数(实数部分和虚数部分) |
3.基本运算
基本运算
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| B = A + 2 C = A / 2 D = A*B D =A @ B A.dot(B)
B = np.power(A, 0.5) C = np.sqrt(A) D = np.log(A)
ma1 = A.max() ma2 = np.max(A)
mi1 = A.min(axis=0) mi2 = np.min(A, axis=0)
me1 = A.mean(axis=1) me2 = np.mean(A, axis=1)
|
矩阵变换
1 2 3 4 5 6 7 8 9
| A.reshape((-1,9)) A.flatten() A。ravel()
B.T B.transpose() np.hstack([A,B]) np.vstack([A,B])
|
4.元素获取
1 2 3 4 5
| B B[0,:] B[1:,1:] B[1:3,1:3] B[0,0] = 10
|
二、OpenCV
1.简介
opencv 是用于快速处理图像处理、计算机视觉问题的工具,支持多种语言进行开发如c++、python、java等。本教程所有示例基于opencv-python,使用python语言对数字图像进行处理和研究。
2.使用
1 2 3
| import cv2 as cv import numpy as np import matplotlib.pyplot as plt
|
读取显示图片
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| img1 = cv.imread('./pic/bear500x333.jpg')
cv.imshow('bear',img1) cv.waitkey(0) cv.destroyAllWindows()
img1 = cv.cvtColor(img1, cv.COLOR_BGR2RGB) plt.imshow(img1) plt.show()
img=cv.imread('./pic/bear500x333.jpg',0)
plt.imshow(img1,cmap='gray') plt.show()
|
函数封装
1 2 3 4 5 6
| def show(img): if img.ndim ==2: plt.imshow(img,cmap='gray') else: plt.imshow(cv.cvtColor(img1, cv.COLOR_BGR2RGB)) plt.show()
|
3.图像绘制
plot
1 2 3 4 5 6 7 8 9 10 11 12 13
| plt.plot(x,y) plt.show()
plt.plot(x,y,'r+-') plt.plot(x,y,'+-',color='r')
plt.plot(x,y1,label="biaoqian") plt.plot(x,y2,label="biaoqian2") plt.legend9() plt.xlabel("x") plt.xlim([0,1]) plt.grid()
|
hist
1 2 3 4 5 6
| plt.hist(a,rwidth=0.9,color='g') plt.show()
bins = np.arange(-0.5, 10, 1) plt.hist(a,bins) plt.show()
|