In [1]:
import cv2
import numpy as np
创建 2x2 矩阵。
In [2]:
A = np.array([[1, 2],
[3, 4]], dtype=np.float32)
计算逆矩阵:
返回 (retval, inverse_matrix)。
In [4]:
B = cv2.invert(A)[1]
计算行列式。
In [5]:
det = cv2.determinant(A)
In [6]:
print("矩阵 A:\n", A)
矩阵 A: [[1. 2.] [3. 4.]]
In [7]:
print("逆矩阵 B:\n", B)
逆矩阵 B: [[-2. 1. ] [ 1.5 -0.5]]
In [8]:
print("行列式 det:", det)
行列式 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 的数学工具都是实现高效计算的基石。