OpenCV —— 矩阵和图像操作

cvAbs , cvAbsDiff , cvAbsDiffS

cvAdd , cvAddS , cvAddWeighted(可添加权重)

#include <cv.h>
#include <highgui.h>

int main(int argc,char** argv)
{
    IplImage *s1,*s2;
    s1=cvLoadImage("wukong.jpg",CV_LOAD_IMAGE_COLOR);
    s2=cvLoadImage("test.jpg",CV_LOAD_IMAGE_COLOR);

    CvRect rect=cvRect(50,50,100,100);
    cvSetImageROI(s1,rect);
    cvSetImageROI(s2,rect);

    cvAddWeighted(s1,0.3,s2,0.7,10,s1);
    cvResetImageROI(s1);

    cvNamedWindow("w1");
    cvShowImage("w1",s1);
    cvWaitKey();

    return 0;
}

cvAvg —— 数组平均值

cvAvgSdv —— 计算像素的标准差

cvCalcCovarMatrix —— 假定这些向量表示的点是高斯分布,计算这些点的均值和协方差矩阵 !! PCA

cvCmp , cvCmpS —— 智能应用于单通道的图像

cvConvertScale —— 将源图像的数据类型转变成目标图像的数据类型;或者,对图像数据执行线性变换(scale  shift)

cvConvertScaleAbs —— 先缩放和平移,然后计算出绝对值,最后进行数据类型的转换

cvCopy

cvCountNonZero

cvCrossProduct —— src1和src2都必须是单道数组

cvCvtColor

cvDet —— 计算方阵的行列式,单通道 (若已知矩阵对称正定,可通过奇异值分解的策略来解决)

cvDiv —— src2 除以 src1 中对应的元素,最终的结果存到dst中

cvDotProduct —— 点积,单通道

cvEigenVV —— 计算矩阵的特征值和相应的特征向量 (若已知矩阵对称正定,最好通过奇异值分解的策略来解决) ,小于10*10

cvFlip —— 将图像绕X或Y轴旋转

cvGEMM —— 广义矩阵乘法

cvGetCol cvGetCols —— 提取矩阵中的某一列,以向量的形式返回

cvGetDiag —— 从矩阵中选择某一条对角线并将其作为向量返回

cvGetDims cvGetDimSize —— 对于矩阵和图像,由cvGetDims 返回的sizes的次序总是先是行数然后是列数

cvGetRow cvGetRows

cvGetSubRect —— 与其他选择数组子区域的函数一样,仅仅返回一个被函数填充的头(指向期望子矩阵数据),不涉及内存的分配和数据的复制

cvInRange cvInRangeS —— 检查图像中像素的灰度是否属于某一指定的范围 (src可以是任意类型,若是多通道,每个通道都分别处理)

cvInvert —— 矩阵的逆  CV_LU CV_SVD CV_SVD_SYM

cvMahalonobis —— Mahalonobis 距离(一点和高斯分布中心之间的向量距离)

cvMax cvMaxS

cvMerge  —— cvSplit 的逆运算,4个数组将被合并到数组dst中

cvMin cvMinS

cvMinMaxLoc —— 找出数组arr中的最大值和最小值,返回他们的地址

cvMul —— 简单乘法,对应元素相乘 —— 元素之间的乘法(vs cvGEMM矩阵乘法)

cvNot

cvNorm —— 范数,相对距离

cvNormalize

cvOr cvOrS

cvReduce —— 对输入的矩阵的每一行或每一列进行系统的转换,使之成为向量dst

cvRepeat —— 将src的内容复制到dst,重复多次,直到dst没有多余的空间

cvScale == cvConvertScale

cvSet cvSetZero

cvSetIdentity —— 除了行数与列数相等以外的所有元素的值都设置为0,行数与列数相等的元素值都设置为1

cvSolve —— 求解线性方程组 (可用来解决超定的线性方程组,使用SVD方法找到的方程组的最小二乘解)

cvSplit —— 分别复制每个通道到多个单通道图像

cvSub cvSubS cvSubRS

cvSum

cvSVD —— 奇异值分解

cvTrace —— 矩阵的迹是对角线元素的总和,输入的数组不需要是方阵

cvTranspose cvT —— 矩阵转置,不支持多通道数组

cvXor cvXorS

cvZero



cvLine 绘制直线

cvRectangle

cvCircle cvEllipse cvEllipseBox(椭圆的外接矩形)

cvFillPoly cvFillConvexPoly cvPolyLine  —— 多边形

cvPutTex —— 图像上输出文本

OpenCV —— 矩阵和图像操作

时间: 2024-12-17 23:19:25

OpenCV —— 矩阵和图像操作的相关文章

opencv矩阵和图像操作之cvCalcCovarMatrix----未完成版存储

#include "stdafx.h" #include "highgui.h" #include "cv.h" #include "iostream" using namespace std; void PrintMat2(CvMat*target, char * name)//第一个参数为cvMat矩阵指针,第二个参数为输出的矩阵的名字 { printf("%s:\n", name); for (int

《学习opencv》笔记——矩阵和图像操作——cvGEMM,cvGetCol,cvGetCols and cvGetDiag

矩阵和图像的操作 (1)cvGEMM函数 其结构 double cvGEMM(//矩阵的广义乘法运算 const CvArr* src1,//乘数矩阵 const CvArr* src2,//乘数矩阵 double alpha,//1号矩阵系数 const CvArr* src3,//加权矩阵 double beta,//2号矩阵系数 CvArr* dst,//结果矩阵 int tABC = 0//变换标记 ); tABC变换标记及其对应的含义 CV_GEMM_A_T 转置 src1 CV_GE

《学习opencv》笔记——矩阵和图像操作——cvDet,cvDit,cvDotProduct,cvEigenVV and cvFlip

矩阵和图像的操作 (1)cvDet函数 其结构 double cvDet(//计算矩阵的行列式 const CvArr* mat ); 实例代码 #include <cv.h> #include <highgui.h> #include <stdio.h> #include <iostream> using namespace std; int main() { double va[] = {1,0,0,0,2,0,0,0,3}; CvMat Va=cvMa

《学习opencv》笔记——矩阵和图像操作——cvSetIdentity,cvSolve,cvSplit,cvSub,cvSubS and cvSubRS

mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了.这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies .disc_copies都可能会发生. 如何重现这个问题,例子的场景是多个进程同时在不断地mnesia:dirty_write/2 mnesia过载分析 1.抛出警告是在mnesia 增加dump

《学习opencv》笔记——矩阵和图像操作——cvAdd、cvAddS and cvAddWeighted

矩阵和图像的操作 (1)cvAdd函数 其结构 void cvAdd(//图像加和 const CvArr* src1,//第一个原矩阵 const CvArr* src2,//第二个原矩阵 CvArr* dst, //存放矩阵 const CvArr* mask = NULL: //控制点 ); 就是单纯的将两个图像加和,mask变量控制加和的元素点,相当于"开关的作用"; 程序实例 #include <cv.h> #include <highgui.h> #

《学习opencv》笔记——矩阵和图像操作——cvCrossProduct and cvCvtColor

矩阵和图像的操作 (1)cvCrossProduct函数 其结构 void cvCrossProdust(//计算两个三维向量的叉积 const CvArr* src1, const CvArr* src2, CvArr* dst ); 实例代码 #include <cv.h> #include <highgui.h> #include <stdio.h> #include <iostream> using namespace std; int main()

《学习opencv》笔记——矩阵和图像操作——cvCalcCovarMatrix,cvCmp and cvCmpS

矩阵和图像的操作 (1)cvCalcCovarMatrix函数 其结构 void cvCalcCovarMatrix(计算给定点的均值和协方差矩阵 const CvArr** vects,//给定向量 int count,//给定向量的组数 CvArr* cov_mat,//结果矩阵 CvArr* avg,//根据flag得到结果 int flags//标记位 ); 标记位参数值极其意义 标志参数的具体标志值 意义 CV_COVAR_NORMAL 计算均值和协方差 CV_COVAR__SCRAM

《学习opencv》笔记——矩阵和图像操作——cvSum,cvSVD,cvSVBkSb,cvTrace,cvTranspose,cvXor,cvXorS and cvZero

矩阵和图像的操作 (1)cvSum函数 其结构 CvScalar cvSum(//计算arr各通道所有像素总和 CvArr* arr//目标矩阵 ); 实例代码 #include <cv.h> #include <highgui.h> #include <stdio.h> #include <iostream> using namespace std; int main() { IplImage *src1,*dst1,*dst2,*dst3,*dst4;

《学习opencv》笔记——矩阵和图像操作——cvOr,cvOrS,cvrReduce,cvRepeat,cvScale,cvSet and cvSetZero

矩阵和图像的操作 (1)cvOr函数 其结构 void cvOr(//两个矩阵对应元素做或运行 const CvArr* src1,//矩阵1 const CvArr* src2,//矩阵2 CvArr* dst,//结果矩阵 const CvArr* mask = NULL//矩阵"开关" ); 实例代码 #include <cv.h> #include <highgui.h> #include <stdio.h> int main(int arg