戳一戳!和我一起走进opencv的世界
导读
OpenCV功能越发强大,不学一下怎么行?
今天要分享这篇文章带我们一起了解图像混合,并利用图像混合完成一些有趣的功能。让我们走进这篇文章,一起来了解一下吧!
往期回顾
【OpenCV-YOLO v4实战】
1 | 尝鲜!Windows下实现YOLOv4物体检测
2 | 坐稳了,OpenCV老司机带你用OpenCV4实现YOLO v4物体检测
【OpenCV基础教程】
1 | 01 OpenCV简介与安装
2 | 02 图像的读取与显示
3 | 03 图像的存储与窗口操作
4 | 04 视频的读取和显示
5 | 05 图像的结构、属性与坐标
6 | 06 图形与文字的绘制
7 | 07 鼠标控件基本操作
8 | 08 trackbar操作及实例详解
9 | 09 图像像素基本操作
1 图像混合
1 引入
我们有时候会将两幅图像混合到一起,得到一幅新的图像,不同部分透明度不同,就会产生不一样的美感!
OpenCV中提供了图像混合的API,可以按权重加和,计算原理如下:
如果应用到图像中,我们令输出图像为dst,两个输入图像分别为img1,img2,权重分别为α,β,我们另外需要一个参数γ调整一下图像的亮度,γ大于0,图像变亮,图像小于0,图像变暗,后面我们还会说明。
2 图像混合API
图像混合的API是 addWeighted ,该API实现的功能是:
计算两个数组(图像)的加权和。
API定义如下:
API参数含义如下:
dst可以不写在参数中,当做API的返回值传出,一般情况下,我们也采用第二种方式,当返回值传出。
3 代码示例
举个例子:
执行结果如下:
4 参数调整问题
调用OpenCV的API,其实就是调参的过程,在调整今天讲的API的参数的时候,我们就要来说明两个问题:
对于第一个问题,两幅图像所占权重之和不一定为1,如果不是1,也可以:
执行结果如下:
但是一般来说,权重之和越接近1,得到的图像效果越好。
对于第二个问题,gamma这个参数用来对混合后的图像明暗程度进行调整,有如下三种情况:
举个例子,我们分别让gamma为:-100,0,100,执行结果如下:
gamma = -100
gamma = 0
gamma = 100
2 部分混合
1 代码分析与编写
如果我们想要混合的图像大小不一样,或者想要混合其中的某个部分,应该怎么办呢?
我们可以先选定ROI区域,然后对ROI区域混合。
2 效果展示
执行结果如下:
3 模拟视频淡入淡出切换
1 效果介绍
做视频的时候,做两个视频或者图片的转换,需要通过淡入淡出转换,或者做PPT的时候,需要使用淡入淡出进行切换。
接下来,让我们使用OpenCV实现下这个效果吧!
2 流程分析与代码编写
淡入淡出是一个动态效果,一幅图像的透明度由0逐渐转化为1,即由不透明转化为百分百透明;一幅图像的透明度由1逐渐转化为0,即由百分百透明转化为不透明。
我们每进行一次调整透明度,就把图像输出一下。
3 效果展示
我把这个效果录成了视频:
大家也可以调整不同的数值,看下效果。
说在后面的话
这篇文章到这里就要结束啦,希望大家能够通过这篇文章,能够掌握图像混合的功能,掌握addWeighted的基本用法,能用addWeighted完成有趣的功能!
让我们在后续的课程中,再接再厉,学习更多知识吧。
号外号外!
AI与区块链技术交流群
成立啦!
本群用于分享交流机器学习、深度学习、计算机视觉、OpenCV、PCL、TensorFlow、Pytorch等内容。
AI与区块链技术
长按二维码关注