opencv计算两数组的乘积_【OpenCV学习笔记】2.2基本操作及函数

本文详细介绍了OpenCV中用于矩阵和数组的各种运算函数,包括逻辑运算、算术运算、矩阵转置、乘法、加法、减法、乘方、指数和对数等。此外,还讲解了如何进行图像的融合、比较、颜色空间转换和矩阵变换等操作。通过实例代码展示了如何使用这些函数进行图像处理,如矩阵加权融合和两图像ROI的融合。
摘要由CSDN通过智能技术生成

有很多函数有mask,代表掩码,如果某位mask是0,那么对应的src的那一位就不计算,mask要和矩阵/ROI/的大小相等大多数函数支持ROI,如果图像ROI被设置,那么只处理ROI部分少部分函数支持COI,如果COI设置,只处理感兴趣的通道

矩阵逻辑运算void cvAnd(const CvArr* src1, const CvArr* src2, CvArr* dst, const CvArr* mask=NULL);//两数组按位与计算如果mask非空void cvAndS(const CvArr* src, CvScalar value, CvArr* dst, const CvArr* mask=NULL);//数组与标量位与计算如果mask非空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(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 cvNot(const CvArr* src,CvArr* dst);//矩阵取反

矩阵算术运算绝对值void cvAbs(const CvArr* src,CvArr* dst);//计算src里的绝对值,把结果写到dst

void cvAbsDiff(const CvArr* src1,const CvArr* src2, CvArr* dst);//两矩阵相减取绝对值写到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,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) + γ

此函数可以实现两个图像的alpha融合(两个原图像和dst的ROI必须统一尺寸)。

标准融合公式:dst(x,y) = α *src1(x,y) +(1-α)*src2(x,y)

如下代码内容:将两张图片的ROI融合输出

#include

#include

#include

int main(int argc, char** argv)

{

IplImage *src1, *src2;

if( argc == 9 && ((src1=cvLoadImage(argv[1],1)) != 0

)&&((src2=cvLoadImage(argv[2],1)) != 0 ))

{

int x = atoi(argv[3]);

int y = atoi(argv[4]);

int width = atoi(argv[5]);

int height = atoi(argv[6]);

double alpha = (double)atof(argv[7]);

double beta = (double)atof(argv[8]);

cvSetImageROI(src1, cvRect(x,y,width,height));

cvSetImageROI(src2, cvRect(0,0,width,height));

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

cvResetImageROI(src1);

cvNamedWindow( "Alpha_blend", 1 );

cvShowImage( "Alpha_blend", src1 );

cvWaitKey();

}

else

printf("Couldn't load one or both of %s, %s\n",argv[1],argv[2]);

return 0;

}

void cvSub(const CvArr* src1, const CvArr* src2, CvArr* dst, const CvArr* mask=NULL);//矩阵减法,dst(I)=src1(I)-src2(I) if mask(I)!=0

void cvSubS(const CvArr* sr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值