cvAddWeighted 进行图片融合
cvAddWeighted( ) 是OpenCV中,将两个图片矩阵进行融合的一个很好的函数,可以得到很多有趣的效果。
其函数原型如下:
void cvAddWeighted( const CvArr* src1, double alpha,const CvArr* src2, double beta,double gamma, CvArr* dst );
src1
第一个原数组.
alpha
第一个数组元素的权值
src2
第二个原数组
beta
第二个数组元素的权值
dst
输出数组
gamma
添加的常数项。
函数 cvAddWeighted 计算两数组的加权值的和:
dst(I)=src1(I)*alpha+src2(I)*beta+gamma
所有的数组必须的相同的类型相同的大小(或ROI大小)
注意:在这里src1,src2,以及dst,都必须是同样的图片类型,如:IPL_DEPTH_8U,在调用cvLoadImage( ) 时,打开方式也必须完全相同,这里1表示以三通道彩色图像方式输入,0表示以灰度图片格式输入,-1表示以原来图片的格式输入
看个例子:
- #include "stdafx.h"
- #include "cv.h"
- #include "highgui.h"
- int main(int argc, char* argv[])
- {
- IplImage *src1,*src2;
- if(argc == 9 && (src1=cvLoadImage(argv[1],1))!=0 && (src2=cvLoadImage(argv[2],1))!=0)
- {
- IplImage *image=cvCreateImage(cvSize(275,313),IPL_DEPTH_8U,3);
- cvResize(src2,image);
- 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(image,cvRect(10,10,width,height));
- cvAddWeighted(src1,alpha,image,beta,0.0,src1);
- cvResetImageROI(src1);
- cvNamedWindow("Alpha_bend",1);
- cvShowImage("Alpha_bend",src1);
- cvWaitKey(0);
- cvReleaseImage(&src1);
- cvReleaseImage(&src2);
- cvDestroyWindow("Alpha_bend");
- }
- return 0;
- }
我的命令行参数是:cvAddWeighted.exe lena.jpg cat.jpg 235 221 115 156 0.8 0.2
当然这里还可以自己调整。
这里由于cat.jpg图片比较大,我先对他进行缩放,然后在和lena.jpg进行图片融合,当然融合的坐标点我实在ps里得到的。
cvAddWeighted 进行图片融合相关推荐
- python+opencv+图像特效(图像灰度处理、颜色翻转、图片融合,边缘检测,浮雕效果,颜色映射)
原图 图像灰度处理 #方式1 import cv2 #读取彩色原图 img0=cv2.imread('E:/python_cv/01.jpg',1) #读取灰度图 img1=cv2.imread('E ...
- python实现浮雕效果的原理_python+opencv+图像特效(图像灰度处理、颜色翻转、图片融合,边缘检测,浮雕效果,颜色映射)...
原图 图像灰度处理 #方式1 import cv2 #读取彩色原图 img0=cv2.imread('E:/python_cv/01.jpg',1) #读取灰度图 img1=cv2.imread('E ...
- Opencv 图片融合 addWeighted性能测试
原文:http://blog.csdn.net/u011503970/article/details/18615537 这次介绍OpenCV中一个简单的点运算函数,用来实现图片合成. 对应于例程中的 ...
- php的优势和背景,CSS_CSS 多图片融合背景定位的应用于优缺点分析,1. 关键字, 例如: background-positio - phpStudy...
1. 关键字, 例如: background-position: top right; 优点: 直观, 可用性高, 各浏览器中表现一致. 缺点: 缺少间隔尺寸. 三个垂直的 (top, center, ...
- 风格化的图片———融合大师的笔触
首先声明非原创,代码是github上的开源项目,在此放上链接添加链接描述 原作者给了7个已经训练好的万步模型,我对代码进行了一些修改后可以批量出结果,也就是我可以拿这个做视频了,目前正在做. 代码部分 ...
- 图片融合 c++ cuda加速
1.新建cuda项目 2. 添加环境 在vc++目录-->包含目录添加 D:\Program Files\opencv\opencv-3.4.5\build_cuda\install\inclu ...
- PHP图片融合处理,PHP极其强大的图片处理库Grafika详细教程(1):图像基本处理...
Grafika是一个PHP图像处理库,是基于Imagick和GD,可以用于改变图片大小,剪裁,比较,添加水印等等功能.还有感知哈希,高级图像过滤,绘制贝塞尔曲线等功能,可谓非常强大. 由于功能太多,所 ...
- PS 蒙版实现图片融合
1. 新建文件,打开原图;(图层1) 2. 打开要做为蒙版的图片;拷贝图层加入新文件-新图层中(图层2); 设置----> 亮度=85% 3.在图层2上,在快捷图层菜单下点"添加图层蒙 ...
- python实现两个图片的叠加融合
python通过PIL将两个图片叠加融合 我想到将一个图片去除背景将其放到另一张图片上以此实现融合. 1**. 打开想要融合的图片** file = Image.open('6.png') verse ...
- Unity 生成二维码 融合图片
Unity 生成二维码,并将二维码和已有背景图片融合,保存到本地,,, 1.场景的搭建 2.代码的编写(参考链接) using System.IO; using UnityEngine; using ...
最新文章
- jQuery 原理的模拟代码 -4 重要的扩展函数 extend
- Java中的Set操作
- ROS系统实现 tf坐标系广播与监听
- iOS 模糊化效果 ANBlurredImageView的使用
- 如何设计ABAP/4 Query报表
- springboot md5加密_SpringSecurity入门-SpringBoot集成SpringSecurity
- freemarker跳出循环
- C++map容器-插入和删除
- Keepalived原理详解
- 【转】const_cast
- 大数据在新型智慧城市的作用
- Linux下如何使用gcc编译器,Linux下gcc编译器的使用总结
- cuda驱动更新方法之一:
- sobel边缘检测java_Sobel边缘检测
- 01.【设计模式】工厂模式
- linux驱动篇-Led
- android弹球游戏小球运动,球球跳一跳跳舞弹球
- win10解决 netstart -ano|findstr “8080“出现netstart不适内部或外部命令
- [Linux]常见环境开发工具
- mtk RF配置步骤三
热门文章
- 电影推荐之《白鹿原》 隐私策略(Privacy policy)
- java学生管理系统oracle_基于Java的Oracle学生成绩管理系统
- 阿里云ubuntu服务器安装使用mysql并配置远程连接记录
- 这项技术曾应用于无人驾驶,荣耀10将其移植到手机上这样操作!
- J2EE MVC模式框架中,表单数据绑定功能不安全实现在Tomcat下造成的DoS及RCE
- Lucene.Net中 FSDirectory存储方式下一个 Document是如何得到的
- linxu的文件类型和扩展名
- github使用介绍
- PostgreSQL在何处处理 sql查询之六十三
- NFS客户端在/etc/fstab设置开机挂载后,开机时无法进入系统