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
相关文章推荐
- OpenCV 编程简介(矩阵/图像/视频的基本读写操作)
- OpenCV学习-常用的图像和矩阵操作函数
- OpenCV&图像处理_1:矩阵,以及图像读写操作
- 学习opencv第三章矩阵和图像操作
- OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)
- 【转】opencv矩阵图像操作函数
- opencv矩阵图像操作函数
- 图像处理之 opencv 学习---矩阵的操作
- openCV 矩阵(图像)操作函数
- opencv常用图像(矩阵)操作函数
- openCV 矩阵(图像)操作函数---史上最全
- OpenCV 编程简介(矩阵/图像/视频的基本读写操作)
- OpenCV 编程简介(矩阵/图像/视频的基本读写操作)
- OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)
- OpenCV 编程简介(矩阵/图像/视频的基本读写操作)
- OpenCV 编程简介(矩阵/图像/视频的基本读写操作)
- OpenCV 编程简介(矩阵/图像/视频的基本读写操作)
- OpenCV图像的矩阵操作
- OpenCV 编程简介(矩阵/图像/视频的基本读写操作)
- OpenCV 矩阵(图像)操作函数