文章目录

  • 1. 简介
  • 2. 实现
  • 3. 结果
  • 参考

1. 简介

阿尔法混合(Alpha Blending)是指将前景图像透明覆盖在背景图像上,透明度通常是指图像的第四个通道或是单独的图像,这种透明蒙版通常称为Alpha蒙版或Alpha遮罩。而实现两幅图像的阿尔法混合的数学原理很简单:在图像的每个像素处,使用Alpha蒙版( α \alpha α)将前景图像的颜色(F)和背景图像的颜色(B)组合在一起,即: I = α F + ( 1 − α ) B , 0 ≤ α ≤ 1 (1) I=\alpha F+(1-\alpha)B,\ \ \ \ 0\leq\alpha\leq 1\tag{1} I=αF+(1−α)B,    0≤α≤1(1)


2. 实现

int main(int argc, char** argv) {// 读取图像Mat foreground = imread("images/duck.png");Mat background = imread("images/beach.png");Mat alpha = imread("images/duck_alpha.png");// 将Mat转换成浮点类型,依次表示32位、浮点型、三通道foreground.convertTo(foreground, CV_32FC3);background.convertTo(background, CV_32FC3);// 将Alpha遮罩归一化至[0,1]alpha.convertTo(alpha, CV_32FC3, 1.0 / 255);// 定义变量存放输出图像Mat outImage = Mat::zeros(foreground.size(), foreground.type());// 前景图像乘以alpha即alpha*F,前两个参数表示输入、最后一个参数表示输出multiply(alpha, foreground, foreground);// 背景图像乘以(1-alpha)即(1-alpha)*B// Scalar::all(1.0)的结果是[1.0,1.0,1.0,1.0],类似于Python的广播机制multiply(Scalar::all(1.0) - alpha, background, background);// 将二者相加add(foreground, background, outImage);// 结果显示imshow("Alpha Blending Image", outImage / 255);waitKey(0);return 0;
}

3. 结果

输入图像为:

输出图像为:


参考

  1. https://www.learnopencv.com/alpha-blending-using-opencv-cpp-python/.
  2. http://www.alphamatting.com/datasets.php.
  3. https://www.publicdomainpictures.net.


(二)OpenCV | 阿尔法混合相关推荐

  1. NBT:宏基因组二、三代混合组装软件OPERA-MS

    文章目录 宏基因组二.三代测序混合组装软件OPERA-MS 热心肠日报 摘要 主要结果 图1. OPERA-MS工作流程图 图2. 宏基因组数据混合组装基因组评测 图3. 组装虚拟肠道微生物组 图4. ...

  2. 《OpenCv视觉之眼》Python图像处理十二 :Opencv图像轮廓提取之基于一阶导数的Roberts算法、Prewitt算法及Sobel算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  3. 基于UE4+ OpenCV 的混合现实 (webCamera, mix-reality, blue screen matting)

    总体效果 类似混合现实,实现展示玩家玩的VR游戏的实况 基本思想 利用openCV 插件,通过摄像头获取到玩家在蓝幕中玩游戏的场景,再使用蓝幕技术,对图像做处理,获取玩家的图像:最后和游戏场景进行叠加 ...

  4. 全景视频拼接(二)--OpenCV源码解析

    本文参考:http://blog.csdn.net/skeeee/article/details/19480693,做了一定修改和补充. 一.stitching_detail程序运行流程 1.命令行调 ...

  5. Matlab和OpenCv的混合编程,工具箱mexopencv

    之前大多时候都在用Matlab做计算机视觉,但是最近项目需要要用到OpenCv.原本打算自己写函数来混合编译,无意间发现了mexopencv,如获珍宝. 1.mexopencv简介 (1)mexope ...

  6. [转载]全景视频拼接(二)--OpenCV源码解析

    转载自 [https://blog.csdn.net/App_12062011/article/details/52438357] 本文参考:http://blog.csdn.net/skeeee/a ...

  7. Windows 8 Directx 开发学习笔记(十二)利用混合实现浮在水面的木箱

    在场景中绘制多个不透明物体时很简单,哪个物体离得近,看到的就是哪个物体.但如果加入一个透明的物体,像玻璃,如何渲染就有些麻烦.拿一块红色的玻璃挡住眼睛,看到的物体都偏红,换成蓝色的玻璃,物体都偏蓝.D ...

  8. [UE5蓝图基础二]1.[1d混合空间] 走和跑的动画切换(shift切换)

    骨骼网格体与动画类对应 创建混合空间选小金人骨骼 混合空间的概念:混合空间就是可以将角色多个动画混合在一起 ,我们创建动画类就是创建个"Animation"文件夹 在文件夹内创建混 ...

  9. 横截面收益率(二) 阿尔法策略是如何构建的

    资本资产定价模型自从首次被提出以来在金融经济学中一直处于中心地位. 在一系列简化假定条件下,资本资产定价模型表明,任何证券的收益率与该证券 的系统性风险(或者贝塔值)呈线性关系.因此,依据资本资产定价 ...

最新文章

  1. SAP MM '独立/集中'等于1的MTS物料MRP运行后合并需求触发PR
  2. MyEclipse中安装反编译插件
  3. matlab如何输出D-H表,MATLAB结果怎么输出表格形式的数据?
  4. LAMP和LNMP去除index.php访问
  5. Elasticsearch聚合深入详解——对比Mysql实现
  6. 关于 Orbeon form PE 版本 Unauthorized 错误消息
  7. java退出不报异常_如何优雅的处理异常(java)?
  8. 并发场景下MySQL存在的问题及解决思路
  9. 前端学习(2178):vue-router得参数传递二
  10. python四舍五入保留小数点后三位_Python中的“正确”四舍五入到小数点后3位
  11. 教育部公开曝光南大梁莹学术不端等4起典型案例
  12. 五、OpenStack安装Nova
  13. 拓端tecdat|R语言广义线性模型GLM、多项式回归和广义可加模型GAM预测泰坦尼克号幸存者
  14. selenium webdriver - 截图
  15. Atitt php script lan debug bp 最佳实践调试php目录1.1. Error_log 11.2. Echo vs log法 11.3. 输出与debug信息昏药问题
  16. win10系统重置网络后,以太网没了,适配器显示为空了,电脑完全没网,这种情况怎么办?
  17. iperf3带宽测试工具
  18. MFCC和fbank的区别
  19. datatable 属性介绍
  20. new(创建)一个对象时都发生了什么?

热门文章

  1. 基于Google Earth Engine Explorer谷歌地球引擎GEE浏览界面实现遥感影像地物监督分类
  2. 已开源!Flutter 流畅度优化组件 Keframe | 开发者说·DTalk
  3. input框不能输入
  4. OSS异常:com.aliyun.oss.ClientException:UnknownHost
  5. AI|再聊决策树模型
  6. 编写可读代码,提高工作效率
  7. 微信分享 微信对图片文字大小的限制 代码如下
  8. 2022跨年演讲分享
  9. 搭建 rasa 框架中遇到的 domain.yml 无效问题
  10. 全息投影+电子干扰+脑波识别