超详细注释之OpenCV构建透明的叠加层
作者:程序媛一枚~ 时间:2021-08-18 14:51:01
为了构造透明的叠加层,需要准备两个图像:
(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
标签:OpenCV,构建叠加层,python
0
投稿
猜你喜欢
一文深入了解Python中的继承知识点
2023-01-16 19:57:16
九步学会Python装饰器
2021-04-05 15:35:07
针对google Chrome的 CSS hacks
2009-11-30 12:45:00
Pandas多列值合并成一列的实现
2023-02-13 08:39:44
python挖矿算力测试程序详解
2022-01-06 18:19:29
如何在PyCharm中配置使用Anaconda环境
2021-01-28 14:16:53
python批量提取word内信息
2021-05-18 14:25:50
在Django的视图(View)外使用Session的方法
2023-06-24 02:28:32
pycharm 使用心得(一)安装和首次使用
2023-06-14 05:49:37
python中的__init__ 、__new__、__call__小结
2021-07-19 20:10:38
Python爬虫之urllib基础用法教程
2023-08-09 08:29:01
4款Python 类型检查工具,你选择哪个呢?
2021-10-29 22:30:27
国际上十四个优秀网页设计审核站
2007-09-30 20:18:00
ASP 日期的加减运算实现代码
2011-03-08 10:47:00
python多进程实现进程间通信实例
2023-01-30 10:39:35
如何判断js脚本加载完成
2008-11-04 13:53:00
Python中dumps与dump及loads与load的区别
2021-10-01 09:13:20
浅谈Django+Gunicorn+Nginx部署之路
2023-04-19 16:36:52
python实现多进程按序号批量修改文件名的方法示例
2021-10-30 08:33:42
Python pip替换为阿里源的方法步骤
2023-07-19 15:39:23