《得知opencv》注意事项——矩阵和图像处理——cvAdd、cvAddS and cvAddWeighted
2015-09-01 17:36
477 查看
矩阵和图像操作
(1)cvAdd函数
其结构
就是单纯的将两个图像加和。mask变量控制加和的元素点。相当于“开关的作用”;
程序实例
输出结果:
![](http://img.blog.csdn.net/20140527155647296)
(2)cvAddS函数
其结构
这个函数是在图像上加上一个value其它和cvAdd一样,当中value是一个cvScalar量所以他的四个变量分别相应RGB空间。
程序实例
输出结果:
![](http://img.blog.csdn.net/20140527155938703)
(3)cvAddWeighted函数
其结构
这个函数是一个公式加和,公式为:dst = src1*alpha + src2*beta + gamma。所以两个权值的和尽量大于零小于一。
实例程序
输出结果
![](http://img.blog.csdn.net/20140527160308859)
to be continued
(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
相关文章推荐
- shell 将变量当命令执行问题【多条命令同时执行问题】
- 第五章 设计程序架构 之 设计缓存策略
- Shell中的${}、##和%%使用范例
- 一个查看贝塞尔曲线效果的网站
- mysql官网下载mysql时无法自动刷新到linux版本,解决办法
- 让程序在 linux 后台运行的集中方式
- 解决Exception: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z等一系列问题
- nginx转发请求
- linux find 命令的详解
- Linux 初学杂记
- linux时间互转
- Nginx + Rtmp 实现rtmp和HLS直播流,同时实现时移(分段录制回放)功能
- Linux中Tomcat 自动设置CATALINA_HOME方法
- centos安装mediawiki
- Docker实践
- Linux 下 LVS+Keepalived 负载均衡安装
- Android (Linux) Suspend流程
- 关闭Linux里边的selinux
- Linux 信号
- Linux 下的shell