超详细注释之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: 最终的结果,输出图像

效果图:

超详细注释之OpenCV构建透明的叠加层


# 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
  • asp之家 网络编程 m.aspxhome.com