矩阵和图像操作

(1)cvAdd函数

其结构

void cvAdd(//图像加和
const CvArr* src1,//第一个原矩阵
const CvArr* src2,//第二个原矩阵
CvArr* dst, //存放矩阵
const CvArr* mask = NULL: //控制点
);

就是单纯的将两个图像加和。mask变量控制加和的元素点。相当于“开关的作用”;

程序实例

#include <cv.h>
#include <highgui.h>
#include <stdio.h> int main(int argc, char** argv)
{
IplImage *src1, *src2,*src3;
src1=cvLoadImage("1.jpg");
src2=cvLoadImage("3.jpg");
src3=cvLoadImage("4.jpg");
cvAdd(src1,src2,src2);
cvShowImage( "測试1", src1);
cvShowImage( "測试2", src2);
cvShowImage( "測试3", src3);
cvWaitKey();
return 0;
}

输出结果:

(2)cvAddS函数

其结构

void cvAddS(//图像加常量
const CvArr* src1,//第一个原矩阵
CvScalar value, //加和常量
CvArr* dst, //存放矩阵
const CvArr* mask = NULL: //控制点
);

这个函数是在图像上加上一个value其它和cvAdd一样,当中value是一个cvScalar量所以他的四个变量分别相应RGB空间。

程序实例

#include <cv.h>
#include <highgui.h>
#include <stdio.h> int main(int argc, char** argv)
{
IplImage *src1, *src2,*src3;
src1=cvLoadImage("1.jpg");
src2=cvLoadImage("1.jpg");
src3=cvLoadImage("1.jpg");
CvScalar cs;
cs.val[2] = 16.0;
cvAddS(src1,cs,src2);
cs.val[1] = 16.0;
cvAddS(src1,cs,src3);
cvShowImage( "測试1", src1);
cvShowImage( "測试2", src2);
cvShowImage( "測试3", src3);
cvWaitKey();
return 0;
}

输出结果:

(3)cvAddWeighted函数

其结构

void cvAddWeighted(  //图像融合
const CvArr* src1,//第一个原矩阵.
double alpha,//第一个矩阵元素的权值
const CvArr* src2,//第二个原矩阵.
double beta,//第二个矩阵元素的权值
double gamma,//加入的常数项。
CvArr* dst //输出矩阵
);

这个函数是一个公式加和,公式为:dst = src1*alpha + src2*beta + gamma。所以两个权值的和尽量大于零小于一。

实例程序

#include <cv.h>
#include <highgui.h>
#include <stdio.h> int main(int argc, char** argv)
{
IplImage *src1, *src2;
src1=cvLoadImage("1.jpg");
src2=cvLoadImage("2.jpg");
int x = 100;
int y = 170;
int width = 230;
int height = 200;
double alpha = 0.2;
double beta = 0.9;
cvSetImageROI(src1, cvRect(x,y,width,height));
cvSetImageROI(src2, cvRect(x,y-20,width,height));
cvAddWeighted(src1, alpha, src2, beta,0.0,src1);
cvResetImageROI(src1);
cvNamedWindow( "Alpha_blend", 1 );
cvShowImage( "測试", src1 );
cvWaitKey();
return 0;
}

输出结果

to be continued

版权声明:本文博主原创文章,博客,未经同意不得转载。

《得知opencv》注意事项——矩阵和图像处理——cvAdd、cvAddS and cvAddWeighted的更多相关文章

  1. 《得知opencv》注意事项——矩阵和图像处理——cvOr,cvOrS,cvrReduce,cvRepeat,cvScale,cvSet and cvSetZero

    矩阵和图像的操作 (1)cvOr函数 其结构 void cvOr(//两个矩阵相应元素做或执行 const CvArr* src1,//矩阵1 const CvArr* src2,//矩阵2 CvAr ...

  2. 《学习opencv》笔记——矩阵和图像处理——cvMinManLoc,cvMul,cvNot,cvNorm and cvNormalize

    矩阵和图像的操作 (1)cvMinManLoc函数 其结构 void cvMinMaxLoc(//取出矩阵中最大最小值 const CvArr* arr,//目标矩阵 double* min_val, ...

  3. 《学习opencv》笔记——矩阵和图像处理——cvGEMM,cvGetCol,cvGetCols and cvGetDiag

    矩阵和图像操作 (1)cvGEMM函数 其结构 double cvGEMM(//矩阵的广义乘法运算 const CvArr* src1,//乘数矩阵 const CvArr* src2,//乘数矩阵 ...

  4. 《学习opencv》笔记——矩阵和图像处理——cvMax,cvMaxS,cvMerge,cvMin and cvMinS

    矩阵和图像操作 (1)cvMax函数 其结构 void cvMax(//比較两个图像取最大值 const CvArr* src1,//图像1 const CvArr* src2,//图像2 CvArr ...

  5. 《学习opencv》笔记——矩阵和图像处理——cvAnd、cvAndS、cvAvg and cvAvgSdv

    矩阵和图像的操作 (1)cvAnd函数 其结构 void cvAnd( //将src1和src2按像素点取"位与运算" const CvArr* src1,//第一个矩阵 cons ...

  6. OpenCV快速遍历矩阵元素方法

    OpenCV中Mat矩阵data数据的存储方式和二维数组不一致,二维数组按照行优先的顺序依次存储,而Mat中还有一个标示行步进的变量Step.使用Mat.ptr<DataTyte>(row ...

  7. Opencv中Mat矩阵相乘——点乘、dot、mul运算详解

    Opencv中Mat矩阵相乘——点乘.dot.mul运算详解 2016年09月02日 00:00:36 -牧野- 阅读数:59593 标签: Opencv矩阵相乘点乘dotmul 更多 个人分类: O ...

  8. Python 图像处理 OpenCV (10):图像处理形态学之顶帽运算与黑帽运算

    前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 「Python ...

  9. OpenCV中的矩阵操作

    函数 Description 说明 cvAdd Elementwise addition of two arrays 两个数组对应元素的和 cvAddS Elementwise addition of ...

随机推荐

  1. python使用matplotlib画图

    python使用matplotlib画图 matplotlib库是python最著名的画图库.它提供了一整套和matlab类似的命令API.十分适合交互式地进行制图. 先介绍了怎样使用matplotl ...

  2. POJ 1745 Divisibility DP

    POJ:http://poj.org/problem?id=1745 A完这题去买福鼎肉片,和舍友去买滴~舍友感慨"这一天可以卖好几百份,每份就算赚一块钱..那么一个月..一年...&quo ...

  3. [Angular2 Form] Validation message for Reactive form

    <div class="form-field"> <label>Confirm Password: </label> <input typ ...

  4. mac 系统 突破百度网盘网速限制

    感谢https://blog.csdn.net/Deft_MKJing/article/details/82561564

  5. poj 2955 Brackets 括号匹配 区间dp

    题意:最多有多少括号匹配 思路:区间dp,模板dp,区间合并. 对于a[j]来说: 刚開始的时候,转移方程为dp[i][j]=max(dp[i][j-1],dp[i][k-1]+dp[k][j-1]+ ...

  6. window.onload,<body onload="function()">, document.onreadystatechange, httpRequest.onreadystatechang 分类: C1_HTML/JS/JQUERY 2014-08-06 16:47 558人阅读 评论(0) 收藏

    部分内容参考:http://www.aspbc.com/tech/showtech.asp?id=1256 在开发的过程中,经常使用window.onload和body onload两种,很少使用do ...

  7. Android多线程研究(3)——线程同步和互斥及死锁

    为什么会有线程同步的概念呢?为什么要同步?什么是线程同步?先看一段代码: package com.maso.test; public class ThreadTest2 implements Runn ...

  8. 每天一个JavaScript实例-处理textarea中的字符成每一行

    <!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  9. Swift开发教程--关于Existing instance variable &#39;_delegate&#39;...的解决的方法

    xcode编译提示问题:Existing instance variable '_delegate' for property 'delegate' with  assign attribute mu ...

  10. 妈蛋:kinMaxShow轮播图异常,WebUploader图片上传坑爹,图片被压缩了

    今天晚上在改造轮播图. 原来的代码是这样的: <div> <img src="${static}/image/index/banner/`.jpg" /> ...