超详细注释之OpenCV构建透明的叠加层
作者:程序媛一枚~ 发布时间:2021-08-18 14:51:01
标签:OpenCV,构建叠加层,python
为了构造透明的叠加层,需要准备两个图像:
(1)原始图片;
(2)要 “叠加”在第一个图像上的图像(包含某种级别的Alpha透明度)。
透明叠加层的用例几乎无穷无尽,其中俩个是:
可以将运行时的重要信息直接覆盖在输出图像上,而不是在单独的窗口或终端中显示。使用透明的叠加层可以减少混淆输出图像内容的需要!
使用Alpha透明度,将两个图像“融合”在一起。
使用cv2.addWeighted应用透明叠加层功能
cv2.addWeighted(overlay, alpha, output, 1 - alpha, 0, output)
–overlay: 我们要应用的叠加层图像
–cv2.addWeighted(overlay, alpha, output, 1 - alpha, 0, output)
–alpha: 叠加层的实际Alpha透明度,alpha越接近1,图像越不透明;alpha越接近0,叠加层显示得越透明;
–output: 原始图像
–beta: Beta定义为1-alpha 。我们需要定义alpha + beta = 1.0
gamma: 伽玛值-加到加权和的标量。可以将gamma视为应用加权加法后添加到输出图像的常数。将其设置为零,表示不需要应用恒定值的加法运算。
–output: 最终的结果,输出图像
效果图:
# USAGE
# python overlay.py
# 导入必要的包
from __future__ import print_function
import numpy as np
import cv2
import imutils
# 加载图像
image = cv2.imread("../image/flower4.jpg")
image = imutils.resize(image, width=600)
cv2.imshow("origin", image)
cv2.waitKey(0)
# 循环遍历 [0,1.0] 的透明度
for alpha in np.arange(0, 1.1, 0.1)[::-1]:
# 创建俩个原始图的拷贝
# 一个用于构建叠加层 一个用于输出图像
overlay = image.copy()
output = image.copy()
# 在左上角 添加文本: PyimageSerach:alpha
# 在右下角画一个矩形的红色框
cv2.rectangle(overlay, (150, 210), (500, 630),
(0, 0, 255), -1)
cv2.putText(overlay, "PyImageSearch: alpha={:.2f}".format(alpha),
(10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 255), 3)
# 使用cv2.addWeighted应用透明叠加层功能
# overlay: 我们要应用的叠加层图像
# alpha: 叠加层的实际Alpha透明度,alpha越接近1,图像越不透明;alpha越接近0,叠加层显示得越透明;
# output: 原始图像
# beta: 我们提供beta值作为第四个参数。 Beta定义为1-alpha 。我们需要定义alpha和beta,以便alpha + beta = 1.0
# gamma: 伽玛值-加到加权和的标量。您可以将gamma视为应用加权加法后添加到输出图像的常数。在这种情况下,我们将其设置为零,因为我们不需要应用恒定值的加法运算。
# output: 输出图像
cv2.addWeighted(overlay, alpha, output, 1 - alpha,
0, output)
# 展示输出图像,alpha,beta
print("alpha={:.2f}, beta={:.2f}".format(alpha, 1 - alpha))
cv2.imshow("Output", output)
cv2.waitKey(0)
cv2.destroyAllWindows()
参考:
https://www.pyimagesearch.com/2016/03/07/transparent-overlays-with-opencv/
来源:https://blog.csdn.net/qq_40985985/article/details/106257379


猜你喜欢
- 有序字典-OrderedDict简介示例有序字典和通常字典类似,只是它可以记录元素插入其中的顺序,而一般字典是会以任意的顺序迭代的。参见下面
- 实验目的:用户输入网卡名称,通过函数返回对应的IPv4和IPv6地址。实验代码:步骤一: 由于window系统下网卡名称并不是真正的名字,而
- 今天学习了如何使用pygame来制作小游戏,下面是五子棋的代码,我的理解都写在注释里了import pygame# 导入pygame模块pr
- 二进制日志二进制日志记录了所有对数据库执行更改的操作,二进制主要有以下两种作用:1、恢复(recovery)2、复制(replication
- pandas: shape()获取Dataframe的行数和列数返回列数:df.shape[1]返回行数:df.shape[0]  
- 1. 新建.py文件# pip install kafka-pythonfrom kafka import KafkaConsumerimp
- 最近在学习OpenCV,本文主要介绍了OpenCV 绘制同心圆的示例代码,分享给大家,具体如下:功能函数// 绘制同心圆void DrawC
- 有时候在一个页面用到收放功能的时候时,总有一个虚线框在触发收放的功能按钮上,显得特别刺眼,那如何去除这个虚线框呢?在IE下,需要在标签 a
- 基于python 3.5,python 2.7 与python3.4 的urllib不同,是urlparse>>> fro
- 最常见的XML数据类型有:Element, Attribute,Comment, Text. &nbs
- 本文实例讲述了Python实现账号密码输错三次即锁定功能。分享给大家供大家参考,具体如下:初学Python—1#实现账号输错三次即锁定use
- 用习惯列表解析之后会觉得超级酷,所以在尝试使用列表解析,把循环什么的写在一行里面。使用if的时候什么时候必须要有else,什么时候可以没有e
- 例表:假如想要去掉表中的‘#',‘;'而且以‘#'和‘;'为分割线切割数据:#将dfxA_2的每一个分隔符之
- 本文实例分析了php字符串截取函数用法。分享给大家供大家参考。具体分析如下:php自带的截取字符串的函数只能处理英文,数字的不能截取中文混排
- 在 玉伯 的文章 《一道大题目,嘿嘿》 中有这样一段代码:[] == ![]也许很多同学迷惑:咦,这个如何转换呢?首先,我们了解下逻辑 NO
- 最近准备做一个关于scrapy框架的实战,爬取腾讯社招信息并存储,这篇博客记录一下创建项目的步骤pycharm是无法创建一个scrapy项目
- selenium主要是用来做自动化测试,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。模拟浏览器进行网页加载,当reque
- 环境python版本号系统游览器python 3.7.2win7google chrome关于本文本文将会通过爬虫的方式实现简单的百度翻译。
- 本文实例讲述了layer弹窗插件操作方法。分享给大家供大家参考,具体如下:1、首先去http://layer.layui.com/下载插件2
- 本文实例讲述了Python二叉树定义与遍历方法。分享给大家供大家参考,具体如下:二叉树基本概述:二叉树是有限个元素的几个,如果为空则为空二叉