import cv2
import numpy as np
# 创建 2x2 矩阵
A = np.array([[1, 2],
[3, 4]], dtype=np.float32)
# 计算逆矩阵
B = cv2.invert(A)[1] # 返回 (retval, inverse_matrix)
# 计算行列式
det = cv2.determinant(A)
print("矩阵 A:\n", A)
print("逆矩阵 B:\n", B)
print("行列式 det:", det)
矩阵 A: [[1. 2.] [3. 4.]] 逆矩阵 B: [[-2. 1. ] [ 1.5 -0.5]] 行列式 det: -2.0
线性代数
矩阵分解:
- 特征值分解(
cv2.eigen
) - 奇异值分解(SVD,
cv2.SVDecomp
) - Cholesky分解(
cv::Cholesky
)
线性方程组求解:
- 最小二乘法(
cv2.solve
,支持DECOMP_SVD/DECOMP_LU
) - 稀疏矩阵求解(
cv::SparseMat
) - 应用场景:相机标定、三维重建中的矩阵优化。
几何变换
2D/3D 变换:
- 旋转矩阵(
cv2.getRotationMatrix2D
) - 仿射(
cv2.warpAffine
)/透视变换(cv2.warpPerspective
) - 罗德里格斯旋转向量转换(
cv2.Rodrigues
)
坐标转换:
- 极坐标变换(
cv::cartToPolar
) - 齐次坐标计算
示例:
cv::Mat H = cv::findHomography(src_pts, dst_pts); // 计算单应性矩阵
cv::warpPerspective(src, dst, H, img.size()); // 透视变换
统计与拟合
统计分析:
- 均值/方差(
cv::meanStdDev
) - 直方图统计(
cv::calcHist
) - 协方差计算(
cv::calcCovarMatrix
)
曲线拟合:
-直线拟合(cv::fitLine
,支持 DIST_L2/DIST_HUBER
)
- RANSAC 鲁棒拟合(
cv::findFundamentalMat
) - 应用场景:运动轨迹拟合、噪声数据过滤。
数值计算与优化
插值方法:
- 最近邻/双线性/立方插值(
cv::resize
)
数值积分:
- 像素求和(
cv::sum
) - 积分图计算(
cv::integral
)
优化算法:
- 非线性最小二乘(Levenberg-Marquardt)
- 凸优化(
cv::convexHull
)
其他数学工具
距离计算:
- 欧氏距离(
cv::norm
) - 马氏距离(
cv::Mahalanobis
)
多边形操作:
- 面积计算(
cv::contourArea
) - 凸包检测(
cv::convexHull
)
总结
OpenCV 的数学工具覆盖了从基础运算到高级优化的完整链条,其特点包括:
- 高性能:底层使用 BLAS/LAPACK 加速
- 跨平台:支持 CPU/GPU 计算
- 模块化:与视觉算法无缝结合
无论是图像处理、3D 重建还是机器学习,OpenCV 的数学工具都是实现高效计算的基石。