使用Python,OpenCV构建透明的叠加层
生活随笔
收集整理的這篇文章主要介紹了
使用Python,OpenCV构建透明的叠加层
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
為了構(gòu)造透明的疊加層,需要準(zhǔn)備兩個(gè)圖像:(1)原始圖片;(2)要 “疊加”在第一個(gè)圖像上的圖像(包含某種級(jí)別的Alpha透明度)。
透明疊加層的用例幾乎無(wú)窮無(wú)盡,其中倆個(gè)是:
- 可以將運(yùn)行時(shí)的重要信息直接覆蓋在輸出圖像上,而不是在單獨(dú)的窗口或終端中顯示。使用透明的疊加層可以減少混淆輸出圖像內(nèi)容的需要!
- 使用Alpha透明度,將兩個(gè)圖像“融合”在一起。
使用cv2.addWeighted應(yīng)用透明疊加層功能
cv2.addWeighted(overlay, alpha, output, 1 - alpha, 0, output)
- –overlay: 我們要應(yīng)用的疊加層圖像
- –cv2.addWeighted(overlay, alpha, output, 1 - alpha, 0, output)
- –alpha: 疊加層的實(shí)際Alpha透明度,alpha越接近1,圖像越不透明;alpha越接近0,疊加層顯示得越透明;
- –output: 原始圖像
- –beta: Beta定義為1-alpha 。我們需要定義alpha + beta = 1.0
- gamma: 伽瑪值-加到加權(quán)和的標(biāo)量。可以將gamma視為應(yīng)用加權(quán)加法后添加到輸出圖像的常數(shù)。將其設(shè)置為零,表示不需要應(yīng)用恒定值的加法運(yùn)算。
- –output: 最終的結(jié)果,輸出圖像
效果圖:
# USAGE
# python overlay.py# 導(dǎo)入必要的包
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)# 循環(huán)遍歷 [0,1.0] 的透明度
for alpha in np.arange(0, 1.1, 0.1)[::-1]:# 創(chuàng)建倆個(gè)原始圖的拷貝# 一個(gè)用于構(gòu)建疊加層 一個(gè)用于輸出圖像overlay = image.copy()output = image.copy()# 在左上角 添加文本: PyimageSerach:alpha# 在右下角畫(huà)一個(gè)矩形的紅色框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應(yīng)用透明疊加層功能# overlay: 我們要應(yīng)用的疊加層圖像# alpha: 疊加層的實(shí)際Alpha透明度,alpha越接近1,圖像越不透明;alpha越接近0,疊加層顯示得越透明;# output: 原始圖像# beta: 我們提供beta值作為第四個(gè)參數(shù)。 Beta定義為1-alpha 。我們需要定義alpha和beta,以便alpha + beta = 1.0# gamma: 伽瑪值-加到加權(quán)和的標(biāo)量。您可以將gamma視為應(yīng)用加權(quán)加法后添加到輸出圖像的常數(shù)。在這種情況下,我們將其設(shè)置為零,因?yàn)槲覀儾恍枰獞?yīng)用恒定值的加法運(yùn)算。# output: 輸出圖像cv2.addWeighted(overlay, alpha, output, 1 - alpha,0, output)# 展示輸出圖像,alpha,betaprint("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/
總結(jié)
以上是生活随笔為你收集整理的使用Python,OpenCV构建透明的叠加层的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 无精子症如何预防
- 下一篇: 使用Python,OpenCV线程化方式