您的位置:首页 > 运维架构

opencv:矩阵和图像操作

2017-02-07 22:21 369 查看
#include "cv.h"
#include "highgui.h"
//alpha融合
int main(int argc,char** argv)
{

IplImage* src = cvLoadImage("E:/opencv/1.jpg");
IplImage* src1 = cvLoadImage("E:/opencv/lena.png");

int x = 250,y = 250;
int width = 250,heigh = 250;
double alpha = 30,beta = 10;

cvSetImageROI(src,cvRect(x,y,width,heigh));
cvSetImageROI(src1,cvRect(0,0,width,heigh));

cvAddWeighted(src,alpha,src1,beta,0.0,src);

cvResetImageROI(src);

cvNamedWindow("Roi_Add",1);
cvShowImage("Roi_Add",src);

cvWaitKey(0);
return 0;
}


void cvAbs(const CvArr* src,const dst);//计算数组中所有元素的绝对值
void cvAbsDiff(const CvArr* src,CvScalar value,const dst);//计算两个数组差值的绝对值
void cvAbsDiffS(sonst CvArr* src,CvScalar value,const dst);//计算数组和标量差值的绝对值
void cvAdd(const CvArr* src1,const CvArr* src2,CvArr* dst,const CvArr* mask = NULL);//两个数组的元素级的加运算
void cvAddS(const CvArr* src,CvScalar value,CvArr* dst,const CvArr* mask = NULL);//一个数组的元素和一个标量的元素级的相加运算
void cvAddWeighted(const CvArr* src1,double alpha,const CvArr* src2,double beta,double gamma,CvArr* dst);//两个数组的元素级的加权相加运算
void cvAnd(const CvArr* src1,CvScalar value,CvArr *dst,const CvArr* mask = NULL);//
CvScalar cvAvg(const CvArr* arr,const CvArr* mask = NULL);//计算数组中所有元素的平均值
void cvAvgSdv(const CvArr* arr,CvScalar* mean,CvScalar* std_dev,const CvArr* mask = NULL);//计数组中所有元素的绝对值和协方差
void cvCalcCovarMatrix(const CvArr** vects,int count,CvArr* cov_mat,CvArr* avg,int flags);//计算一组n维空间向量的协方差
CV_COVAR_NORMAL         //计算均值和协方差
CV_COVAR_SCRAMBLED      //快速PCA“Scrambled”协方差
CV_COVAR_USE_AVERAGE    //输入均值而不是计算均值
CV_COVAR_SCALE          //重新缩放输出的协方差矩阵
void cvCmp(const CvArr* src1,const CvArr* src2,CvArr* dst,int cmp_op);// 对两个数组中的所有元素运用设置的比较操作
void cvCmpS(const CvArr* src1,const CvArr* src2,CvArr* dst,int cmp_op);// 对数组和标量运用设置的比较操作
void cvConvertScale(const CvArr* src,CvArr* dst,double scale = 1.0,double shift = 0.0);// 用可选的缩放值转换数组元素类型
void cvConvertScaleAbs(const CvArr* src,CvArr* dst,double scale = 1.0,double shift = 0.0)// 计算可选的缩放值的绝对值后再转换数组元素的类型
void cvCopy(const CvArr* src,CvArr* dst,const CvArr* mask = NULL); //把数组中的值复制到另一个数组中
int cvCountNonZero(const CvArr* arr);// 计算数组中的非0值的个数
void cvCrossProduct(const CvArr* src1,const CvArr* src2,CvArr* dst);// 计算两个三维向量的向量积(叉积)
void cvCvtColor(const CvArr* src,CvArr* dst,int code);//将图像从一个颜色空间转换到另一个颜色空间
double cvDet(const CvArr* mat);// 计算方阵的行列式
void cvDiv(const CvArr* src1,const CvArr* src2,CvArr* dst,double scale = 1);// 用另外一个数组对一个数组进行元素级的除法运算
void cvDotProduct(const CvArr* src1,const CvArr* src2);// 计算两个向量的点积
void cvEigenVV(CvArr* mat,CvArr* evects,CvArr* evals,double eps = 0);// 计算方阵的特征值和特征向量
void cvFlip(const CvArr* src,CvArr* dst = NULL,int flip_mode = 0);// 围绕选定轴翻转
void cvGEMM(const CvArr* src1,const CvArr* src2,double alpha,const CvArr* src3,double beta,CvArr* dst,int tABC = 0);//矩阵乘法
CvMat* cvGetCol(const CvArr* arr,CvMat* submat,int col);// 从一个数组的列中复制元素
CvMat* cvGetCols(const CvArr* arr,CvMat* submat,int start_col,int end_col);// 从数据的相邻的多个列中复制元素
CvMat* cvGetDiag(const CvArr* arr,CvMat* submat,int diag = 0);// 复制数组中对角线上的所有元素
int cvGetDims(const CvArr* arr,int* sizes = NULL);// 返回数组的维数
int cvGetDimSize(const CvArr* arr,int index);// 返回一个数组的所有维的大小
CvMat* cvGetRow(const CvArr* arr,CvMat* submat,int row);//从一个数组的行中复制元素值
CvMat* cvGetRows(const CvArr* arr,CvMat* submat,start_row,int end_row);// 从一个数组的多个相邻的行中复制元素值
CvSize cvGetSize(const CvArr* arr);// 得到二维的数组的数组的尺寸,以CvSize返回
CvSize cvGetSubRect(const CvArr* arr,CvArr* submat,CvRect rect);// 从一个数组的隆阳区域复制元素值
void cvInRange(const CvArr* src,CvArr* lower,CvArr* upper,CvArr* dst);// 检查一个数组的元素是否在另外两个数组中的值的范围内
void cvInRangeS(const CvArr* src, CvArr* lower, CvArr* upper,CvArr* dst);// 检查一个数组的元素的值是否在另外两个标量的范围内
double cvInvert(const CvArr* src,CvArr* dst,Int method = CV_LU);// 求矩阵的转置
void cvMahalonobis(const CvArr* vec1,const CvArr* vec2,CvArr* mat);// 计算两个向量间的马氏距离
vdid cvMax(const CvArr* src1,const CvArr* src2,CvArr* dst);// 在两个数组中进行元素级的取最大值操作
void cvMaxS(const CvArr* src1,const CvArr* src2,CvArr* dst);// 在一个数组和一个标量中进行元素级的取最大值操作
void cvMerge(const CvArr* src0,const CvArr* src1,const CvArr* src2,const CvArr* src3,CvArr* dst);// 把几个单通道图像合并为一个多通道图像
void cvMin(const CvArr* src1,const CvArr* src2,,CvArr* dst);// 在两个数组中进行元素级的取小值操作
void cvMins(const CvArr* src1,const CvArr* src2,,CvArr* dst);//在一个数组和一个标量中进行元素级的取最小值操作
void cvMinMaxLoc(const CvArr* arr,double* min_val,doubel* max_val,CvPoint* min_loc = NULL,CvPoint* max_loc = NULL,const CvArr* mask = NULL);// 寻找数组中的最大最小值
void cvMul(const CvArr* src1,const CvArr* src2,CvArr* dst,double scale = 1);// 计算两个数组的元素级的乘积
void cvNot(const CvArr* src,CvArr* dst);// 按位对数组中的每一个元素求反
double cvNorm(const CvArr* arr1,const CvArr* arr2 = NULL,int norm_type = CV_L2,const CvArr* mask = NULL);// 计算两个数组的正态相关性
void cvNormalize(const CvArr* src,CvArr* dst,double a = 1.0,double b = 0.0,int norm_type = CV_L2,const CvArr* mask = NULL);// 将数组中的元素进行规一化
void cvOr(const CvArr* src1,const CvArr* src2,CvArr* dst,const CvArr* mask = NULL);// 对两个数组进行按位或操作
void cvOrS(const CvArr* src1,const CvArr* src2,CvArr* dst,const CvArr* mask = NULL);// 在数组与标量之间进行按位或操作
CvSize cvReduce(const CvArr* src,CvArr* dst,int dim,int op = CV_REDUCE_SUM);// 通过给定的操作符将二维数组约简为向量
void cvRepeat(const CvArr* src,CvArr* dst);// 以平铺的方式进行数组复制
void cvSet(CvArr* arr,CvScalar value,const CvArr* mask = NULL);// 用给定值初始化数组
void cvSetZero(CvArr* arr,CvScalar value,const CvArr* mask = NULL)// 将数组中所有元素初始化为0
void cvSetIdentity(CvArr* arr);// 将数组中对角线上的元素设为1,其余设为0
int  cvSolve(const CvArr* src1,const CvArr* src2,CvArr* dst,int method = CV_LU);// 求出线性方程的解
void cvSplit(const CvArr* src,CvArr* dst0,CvArr* dst1,CvArr* dst2,CvArr* dst3);// 奇异值回代计算
void cvSub(const CvArr* src1,const CvArr* src2,CvArr* dst,const CvArr* mask = NULL);// 两个数组元素级的相减
void cvSubS(const CvArr* src,CvScalar value,CvArr* dst,const CvArr* mask = NULL);// 元素级的从数组中减去标量
void cvSubRS(const CvArr* src,CvScalar value,CvArr* dst,const CvArr* mask = NULL);// 元素级的从标量中减去数组
void cvSum(CvArr* arr);// 对数组中的所有元素求和
void cvSVD(CvArr* A,CvArr* W,CvArr* U = NULL,CvArr* V = NULL,int flags = 0);// 二维矩阵的奇异值分解
void cvSVBkSb(const CvArr* W,const CvArr* U,const CvArr* V,const CvArr* B,CvArr* X,int flags = 0);// 奇异值回代计算
void cvTrace(const CvArr* mat);// 计算转置运算
void cvTranspose(const CvArr* src,CvArr* dst);// 矩阵的转置运算
void cvXor(const 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 cvZero(CvArr* arr);//将所有数组中的元素置为0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: