opencv中的矩阵操作

上传人:飞*** 文档编号:40208219 上传时间:2018-05-24 格式:DOC 页数:3 大小:42KB
返回 下载 相关 举报
opencv中的矩阵操作_第1页
第1页 / 共3页
opencv中的矩阵操作_第2页
第2页 / 共3页
opencv中的矩阵操作_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《opencv中的矩阵操作》由会员分享,可在线阅读,更多相关《opencv中的矩阵操作(3页珍藏版)》请在金锄头文库上搜索。

1、opencvopencv 中的矩阵操作中的矩阵操作 分类: Computer Vision2012-03-23 09:49659 人阅读评论(1)收藏举报 dstnullsystemeach有很多函数有 mask,代表掩码,如果某位 mask 是 0,那么对应的 src 的那一位就不计算,mask 要和矩阵/ROI/的大小相等 大多数函数支持 ROI,如果图像 ROI 被设置,那么只处理 ROI 部分 少部分函数支持 COI,如果 COI 设置,只处理感兴趣的通道矩阵逻辑运算矩阵逻辑运算 void cvAnd(const CvArr* src1, const CvArr* src2, CvAr

2、r* dst, const CvArr* mask=NULL);/ void cvAndS(const CvArr* src, CvScalar value, CvArr* dst, const CvArr* mask=NULL);/ void cvOr(const CvArr* src1, const CvArr* src2, CvArr* dst, const CvArr* mask=NULL);/ void cvOrS(const CvArr* src, CvScalar value, CvArr* dst, const CvArr* mask=NULL);/ void cvXor(co

3、nst CvArr* src1, const CvArr* src2, CvArr* dst, const CvArr* mask=NULL);/ void cvXorS(const CvArr* src, CvScalar value, CvArr* dst, const CvArr* mask=NULL);/ void cvNot(const CvArr* src,CvArr* dst);/矩阵取反矩阵算术运算矩阵算术运算 绝对值绝对值 void cvAbs(const CvArr* src,CvArr* dst); void cvAbsDiff(const CvArr* src1,con

4、st CvArr* src2, CvArr* dst);/两矩阵相减取绝对值 void cvAbsDiffS(const CvArr* src, CvArr* dst,CvScalar value);/矩阵减去一个数取绝对值 加减加减 void cvAdd(const CvArr* src1,const CvArr* src2,CvArr* dst,const CvArr* mask = NULL);/两数组相加,dst(I)=src1(I)+src2(I) if mask(I)!=0 void cvAddS(const CvArr* src,CvScalar value,CvArr*dst,

5、const CvArr* mask = NULL);/数组和一个数相加,dst(I)=src(I)+value if mask(I)!=0 void cvAddWeighted(const CvArr* src1,double alpha,const CvArr* src2,double beta,double gamma,CvArradded to each sum* dst);/带权相加相当于 dst(x,y) = ? src1(x,y) + ? src2(x,y) + void cvSub(const CvArr* src1, const CvArr* src2, CvArr* dst,

6、 const CvArr* mask=NULL);/矩阵减法,dst(I)=src1(I)-src2(I) if mask(I)!=0 void cvSubS(const CvArr* src, CvScalar value, CvArr* dst, const CvArr* mask=NULL);/矩阵减数,dst(I)=src(I)-value if mask(I)!=0 void cvSubRS(const CvArr* src, CvScalar value, CvArr* dst, const CvArr* mask=NULL);/数减矩阵,dst(I)=value-src(I) i

7、f mask(I)!=0 乘除乘除 void cvDiv(const CvArr* src1, const CvArr* src2, CvArr* dst, double scale=1);/scale*src1(i)/src2(i),如果 src1=NULL,则计算 scale/src2(i) void cvMul(const CvArr* src1,const CvArr* src2,CvArr* dst,double scale=1);/两矩阵元素之间的简单乘法,一般的矩阵点乘用 cvGEMM(); 次方次方 void cvPow(const CvArr* src, CvArr* dst

8、, double power);/为每个 src 的数求 power 次方 指数指数 void cvExp(const CvArr* src, CvArr* dst);/dst(I)=EXP(src(I) 对数对数 void cvLog(const CvArr* src, CvArr* dst);/线性代数计算线性代数计算 加加/src1 和 scale的乘积加上 src2 void cvCrossProduct(const CvArr* src1,const CvArr* src2,CvArr* dst);/计算两个 3D 向量(单通道)的叉乘运算 double cvDotProduct(c

9、onst CvArr* src1, const CvArr* src2);/两个向量点乘 void cvGEMM(const CvArr* src1, const CvArr* src2, double alpha, const CvArr* src3, double beta, CvArr* dst, int tABC=0);/乘加运算的始祖 由通用乘加函数参与定义的两个具体宏 cvMatMul(const CvArr* src1,const CvArr* src2,CvArr* dst); cvMatMulAdd(const CvArr* src1,const CvArr* src2,co

10、nst CvArr* src3,CvArr* dst); CvScalar cvTrace(const CvArr* mat);/计算对角线上的元素和 变换变换 void cvTransform(const CvArr* src, CvArr* dst, const CvMat* transmat, const CvMat* shiftvec=NULL);/dst=transmat src + shiftvec void cvPerspectiveTransform(const CvArr* src, CvArr* dst, const CvMat* mat);/把矩阵每个元素中三个通道当做一

11、个矩阵,乘 mat,mat 是一个 33 或者 44 的转换矩阵 转置转置 void cvTranspose(const CvArr* src, CvArr* dst); void cvMulTransposed(const CvArr* src, CvArr* dst, int order, const CvArr* delta=NULL, double scale=1.0);/(src-delta)乘以它的转置再乘以 scale 逆矩阵逆矩阵 double cvInvert(const CvArr* src,CvArr* dst,int method=CV_LU);/求原矩阵的逆矩阵,默认

12、使用高斯消去法 方阵可逆的充要条件是|A|!=0 method 取值为 CV_LU 高斯消去法(默认) CV_SVD 奇异值分解 SVD CV_SVD_SYM 对称矩阵的 SVD 行列式行列式 double cvDet(const CvArr* mat);/计算方阵行列式,一定是单通道的 小型方阵直接计算,大型方阵用高斯消去法计算 如果矩阵正定对称,用奇异值分解的方法解决 cvSVD(); 特征向量特征值特征向量特征值 void cvEigenVV(CvArr* mat, CvArr* evects, CvArr* evals, double eps=0);/计算对称矩阵的特征值和特征向量,e

13、vects 输出特征向量,evals 输出特征值,eps 雅可比方法停止参数 要求三个矩阵都是浮点类型,1010 以下该方法有效,2020 以上的矩阵不能计算出结果,为节约计算量,eps 通常设为 DBL_EPSILON(10-15) 如果给定的矩阵是对称正定矩阵,那么考虑使用 cvSVD(); 协方差协方差 void cvCalcCovarMatrix(const CvArr* vects, int count, CvArr* cov_mat, CvArr* avg, int flags);/给定一组大小和类型相同的向量,向量的个数,计算标记,输出协方差正阵和每个向量的平均值矩阵 CV_CO

14、VAR_NORMAL 普通计算协方差和平均值,输出的是 nn 的协方差阵 CV_COVAR_SCRAMBLED 快速 PCA“Scrambled”协方差,输出的是 mm 的协方差阵 CV_COVAR_USE_AVERAGE 平均值是输入的 CV_COVAR_SCALE 重新缩放输出的协方差矩阵 四个 flag 通过并运算协同发挥作用,前两个不能并 CvSize cvMahalonobis(const CvArr* vec1,const CvArr* vec2,CvArr* mat); int cvSolve(const CvArr* src1, const CvArr* src2, CvArr

15、* dst, int method=CV_LU);/Solves a linear system or least-squares problem. void cvSVD(CvArr* A, CvArr* W, CvArr* U=NULL, CvArr* V=NULL, int flags=0);/Performs singular value decomposition of a real floating-point matrix. void cvSVBkSb(const CvArr* W, const CvArr* U, const CvArr* V, const CvArr* B, C

16、vArr* X, int flags);/Performs singular value back substitution.数组比较数组比较 void cvCmp(const CvArr* src1, const CvArr* src2, CvArr* dst, int cmp_op);/两矩阵比较运算 CV_CMP_EQ - src1(I) 是否相等 CV_CMP_GT - src1(I) 是否大于 CV_CMP_GE - src1(I) 是否大于等于 CV_CMP_LT - src1(I) 是否小于 CV_CMP_LE - src1(I) 是否小于等于 CV_CMP_NE - src1(I) 是否不等 如果判断为假,dst 设为 0,如果判断为真,dst 设为 0xff void cvCmpS(const CvArr* src, double value, CvArr* dst, int cmp_op);/矩阵和一个数字比较运算矩阵内转换矩阵内转换 类型转换类型转换 vo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号