Python 各模块用法

概览

MNN在C++的基础上,增加了Python扩展。扩展单元包括两个部分:

  • MNN:负责推理,训练,图像处理和数值计算

  • MNNTools:对MNN的部分工具进行封装,包括:mnn,mnnconvert和mnnquant

MNN模块

MNN中的模块信息如下:

MNN

MNN模块是对Session API的Python封装。 同时对图像处理进行了封装,封装了ImageProcess和Matri相关的所有数据结构与函数。

expr

expr模块是对Expr API的Python封装。

nn

nn模块是对Module API的Python封装。

data

data模块是对[Dataset]的Python封装。

optim

optim模块是对[Optimizer]的Python封装。

cv

cv模块提供了与OpenCV相似的接口函数,具备基础的图像处理能力,目前支持的cv函数60个。

图像编解码

函数名 功能
haveImageReader 是否可读(解码)
haveImageWriter 是否可写(编码)
imdecode 从内存解码为Mat
imencode 编码Mat到内存中
imread 读图片
imwrite 写图片

图像滤波

函数名 功能
blur 均值滤波,平滑模糊
boxFilter 盒子滤波,
dilate 膨胀
filter2D 2d卷积
GaussianBlur 高斯模糊
getDerivKernels 求导数,实际为Sobel/Scharr
getGaborKernel 获取Gabor核
getGaussianKernel 获得高斯核
getStructuringElement 获取结构化元素用于形态学操作
Laplacian 边缘检测滤波
pyrDown 高斯平滑+下采样
pyrUp 上采样+高斯平滑
Scharr 边缘检测滤波
sepFilter2D 2个一维kernel做滤波
Sobel 边缘检测滤波
spatialGradient 梯度,实际为Sobel
sqrBoxFilter 平方后滤波

图像形变

函数名 功能
getAffineTransform 仿射变换
getPerspectiveTransform 透视变换
getRectSubPix 截取矩形区域
getRotationMatrix2D 旋转矩阵
invertAffineTransform 仿射变换矩阵求逆
resize 图片放缩
warpAffine 仿射变换
warpPerspective 透视变换

图像转换

函数名 功能
blendLinear 线性混合2个图像
threshold 逐像素阈值化

绘画函数

函数名 功能
arrowedLine 画箭头
circle 画圆
drawContours 画轮廓
fillPoly 填充多边形
line 画线段
rectangle 画正方向

色彩空间转换

函数名 功能
cvtColor 颜色空间转换
cvtColorTwoPlane YUV420到RGB的转换

结构函数

函数名 功能
findContours 轮廓检测
contourArea 计算轮廓的面积
convexHull 计算点集的凸包
minAreaRect 最小外接矩形
boundingRect 计算点集的最小外接矩形
connectedComponentsWithStats 计算图像的连通域
boxPoints 计算矩形的四个顶点坐标

直方图

函数名 功能
calcHist 计算直方图

3D

函数名 功能
Rodrigues 旋转矩阵转换为旋转向量
solvePnP 计算2d到3d的映射

数组操作函数

函数名 功能
copyTo 带mask的拷贝
bitwise_and 带mask按位与
bitwise_or 带mask按位或
bitwise_xor 带mask按位异或
hconcat 水平方向拼接
vconcat 垂直方向拼接
mean 求均值
flip 翻转
rotate 旋转

numpy

numpy函数170个,函数列表如下:

数组创建

函数名 功能
empty 空数组
empty_like 空数组like
eye 对角线2d数组
identity 对角线2d数组
ones 全1数组
ones_like 全1数组like
zeros 全0数组
zeros_like 全0数组like
full 填充
full_like 填充like
array 创建数组
asarray 创建数组
asanyarray 创建数组
ascontiguousarray 创建数组
asmatrix 创建2d数组
copy 拷贝数组
arange 范围创建
linspace 区间创建
logspace log区间创建
geomspace log区间创建
meshgrid 坐标矩阵
mat 矩阵

数组操作

函数名 功能
copyto 拷贝至
shape 获取形状
reshape 改变形状
ravel 拉平
flat 拉平
flatten 拉平
moveaxis 移动维度
rollaxis 轮转维度
swapaxes 交换维度
T 转置
transpose 转置
atleast_1d 至少1维
atleast_2d 至少2维
atleast_3d 至少3维
broadcast_to 广播
broadcast_arrays 数组广播
expand_dims 增加维度
squeeze 压缩1维度
asfarray 转浮点
asscalar 转标量
concatenate 连接
stack 连接
vstack 垂直连接
hstack 水平连接
dstack 深度连接
column_stack 列连接
row_stack 行连接
split 切分
array_split 数组切分
dsplit 深度切分
hsplit 水平切分
vsplit 垂直切分
tile 重复堆叠
repeat 重复
reshape 变形

坐标操作

函数名 功能
nonzero 非0元素坐标
where 条件选取
unravel_index 反拉平坐标

线性代数

函数名 功能
dot 点乘
vdot 点乘
inner 内积
matmul 矩阵乘

逻辑函数

函数名 功能
all 全部非0
any 任意非0
logical_and
logical_or
logical_not
logical_xor 异或
array_equal 相等
array_equiv 相等
greater 大于
greater_equal 大于等于
less 小于
less_equal 小于等于
equal 等于
not_equal 不等

数学函数

API 功能
sin 正弦
cos 余弦
tan 正切
arcsin 反正弦
arccos 反余弦
arctan 反正切
hypot
arctan2
sinh
cosh
tanh
arcsinh
arccosh
arctanh
around
round_
rint
floor
ceil
trunc
prod
sum
nanprod
nansum
exp e指数
expm1 e指数-1
exp2 2指数
log 对数
log10 10对数
log2 2对数
log1p x+1对数
logaddexp exp对数
logaddexp2 2指数对数
sinc
signbit
copysign
frexp
ldexp
add
reciprocal 倒数
positive 取正
negative 取负
multiply
divide
power 指数
subtract
true_divide
floor_divide
float_power 指数
fmod
mod
modf
remainder
divmod 除,余
convolve 卷积
clip 缩小范围
sqrt 平方根
cbrt 立方根
square 平方
absolute 绝对值
fabs 绝对值
sign 符号
maximum 取大
minimum 取小
fmax 取大
fmin 取小

数组扩充

函数名 功能
pad 扩充

随机采样

函数名 功能
random 随机数
rand 随机数
randn 随机数
randint 随机定点数

排序,搜索,计数

函数名 功能
sortlexsortargsort 排序
argmax 最大值坐标
nanargmax 最大值坐标
argmin 最小值坐标
nanargmin 最小值坐标
argwhere 非0坐标
flatnonzero 非0元素
count_nonzero 非0总数

统计

函数名 功能
amin 最小值
amax 最大值
nanmin 最小值
nanmax 最大值
ptp 范围
average 均值
mean 均值
std 标准差
var 方差
nanmean 均值
nanstd 标准差
nanvar 方差