Python+Opencv:在视频上叠加一个背景透明Logo
前言:看电视节目时,电视台都会把打在视频上,大多数视频Logo背景都是固定不便的,但有些做得好的效果是,Logo背后的视频是随节目内容实时变化的.这到底怎么实现的呢?
经过实践,我也搞了一个Logo背景能随视频内容实时变化的小实例
1.话不多说,上图看结果
怎么样,效果是不是还挺不错:)
下面就来展示实现的过程和代码:
1.先准备好我的会吐智慧泡泡的旺达鱼Logo(咱们请不起美工,只能从卫生间的瓷砖上拍个照片当Logo)
这个图片不清晰,有很多噪点,没办法只能将就的用了
2.图片处理,看代码
#--------Ewangda 通过mask 实现logo叠加视频
#------logo 图片处理-----------
img2 = cv2.imread('ewangda-logo.jpg')
img2 = cv2.resize(img2, (110, 60))# 首先获取原始图像roi
rows, cols, channels = img2.shape
# 原始图像转化为灰度值
img2gray = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)# 将灰度值二值化,得到ROI区域掩模
# cv2.threshold (源图片, 阈值=ret, 填充色, 阈值类型)
ret, mask = cv2.threshold(img2gray, 244, 255, cv2.THRESH_BINARY)# ROI掩模区域反向掩模
mask_inv = cv2.bitwise_not(mask)# 掩模显示前景
img2_fg = cv2.bitwise_and(img2, img2, mask=mask_inv)
cv2.imshow('img2_fg', img2_fg)
cv2.waitKey(0)
#---------Logo处理结束
3.logo与视频通过mask叠加
#----获取视频图像isTrue, image = cap.read()frame = cv2.resize(image, (800, 600))# ------gtj mask 叠加logo开始roi = frame[10:10 + rows, 10:10 + cols]# 掩模显示背景img1_bg = cv2.bitwise_and(roi, roi, mask=mask)# cv2.imshow('img1_bg', img1_bg)# cv2.waitKey(0)# 前背景图像叠加dst = cv2.add(img1_bg, img2_fg)frame[10:10 + rows, 10:10 + cols] = dst
4.最后给出所有代码,希望你也能实现
import cv2#--------Ewangda 通过mask 实现logo叠加视频
#------logo 图片处理-----------
img2 = cv2.imread('ewangda-logo.jpg')
img2 = cv2.resize(img2, (110, 60))# 首先获取原始图像roi
rows, cols, channels = img2.shape
# 原始图像转化为灰度值
img2gray = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)# 将灰度值二值化,得到ROI区域掩模
# cv2.threshold (源图片, 阈值=ret, 填充色, 阈值类型)
ret, mask = cv2.threshold(img2gray, 244, 255, cv2.THRESH_BINARY)# ROI掩模区域反向掩模
mask_inv = cv2.bitwise_not(mask)# 掩模显示前景
img2_fg = cv2.bitwise_and(img2, img2, mask=mask_inv)#---------Logo处理结束# 打开内置摄像头
cap = cv2.VideoCapture(0)
flag = cap.isOpened()
print(cap.isOpened(),cap.get(3),cap.get(4))while flag:#----获取视频图像isTrue, image = cap.read()frame = cv2.resize(image, (800, 600))# ------gtj mask 叠加logo开始roi = frame[10:10 + rows, 10:10 + cols]# 掩模显示背景img1_bg = cv2.bitwise_and(roi, roi, mask=mask)# 前背景图像叠加dst = cv2.add(img1_bg, img2_fg)frame[10:10 + rows, 10:10 + cols] = dstif isTrue:cv2.imshow('Ewangda', frame)if cv2.waitKey(20) & 0xFF == ord('q'):breakelse:break
cap.release()
cv2.destroyAllWindows()
总结:这个实现结果还是很粗糙的,因为我的Logo图质量太差,导致噪点太多,不该透明的地方也透明了,后续有待改进
Python+Opencv:在视频上叠加一个背景透明Logo相关推荐
- python opencv读取视频没声音_python + opencv: 解决不能读取视频的问题
博主一开始使用python2.7和Opencv2.4.10来获取摄像头图像,程序如下: cap = cv2.VideoCapture(0) ret, frame = cap.read() 使用这个程序 ...
- 使用Python,OpenCV在视频中进行实时条形码检测
使用Python,OpenCV在视频中进行实时条形码检测 1. 步骤 2. 适用场景及优化 3. 总结 4. 源码 参考 上一篇博客介绍了如何检测和查找图像中的条形码.这篇博客将进行一些优化以检测实时 ...
- Qt 视频上叠加透明图片
Qt 视频上叠加透明图片 最近公司需要一个上位机软件,主要是全屏显示视频,在视频上面叠加透明图片. 调试了很多种方法,效果都不如意,主要是因为Qt 窗口背景不能被覆盖,透明背景,又不能播放视频. 我调 ...
- 解决Python OpenCV 读取视频并抽帧出现error while decoding的问题
解决Python OpenCV 读取视频抽帧出现error while decoding的问题 1. 问题 2. 解决 3. 源代码 参考 1. 问题 读取H264视频,抽帧视频并保存,报错如下: [ ...
- python opencv PIL 视频分割成图片 图片合成为视频 修改图片大小(抗锯齿)
Python代码将原有的视频分割成图片,我的例子是一帧一帧的分割 用python+opencv完成视频的分割 import cv2 #导入opencv模块 print(2) #测试是否运行 vc=cv ...
- 怎么在视频上叠加字幕和Logo--开题篇
视频叠加字幕和图标(在某些地方也叫叠加OSD)在很多场合都很有用,比如电视台在直播的节目上叠加台标:美女主播在直播时在视频上加上自己喜爱的饰物或大头贴以增加娱乐的气氛:电影播放时在视频下方显示中英文字 ...
- python图片转视频加特效_使用Python opencv实现视频与图片的相互转换
因为最近要经常转换数据集进行实验,因此记录一下. 1.视频转图片 即为将视频解析为一帧一帧的图片: import cv2 vc=cv2.VideoCapture("/home/hqd/Pyc ...
- python opencv 图片/视频 拼接
python opencv 图片/视频 拼接 # coding: utf-8 # 像写诗一样写代码 import numpy as np import cv2img_A_path = "C: ...
- python opencv写视频——cv2.VideoWriter()
python opencv写视频--cv2.VideoWriter() 函数原型 cv2.VideoWriter() VideoWriter(filename, fourcc, fps, frameS ...
最新文章
- 如何处理单元测试产生的数据,下列哪些说法是正确的
- darknet: ./src/cuda.c:36: check_error: Assertion `0' failed.
- windows环境下封装条件wait和signal
- python图片分析中央气象台降水量预报_php采集自中央气象台范围覆盖全国的天气预报代码实例...
- Linux apache2将目录从/var/www/html调整为/根目录时报错:You don‘t have permission to access / on this server
- 【每日一题】7月10日精讲—矩阵取数游戏
- Java面试你必须要知道的那些知识,深夜思考
- magento tab(easy tables)标签应用
- 作者:陈兴鹏(1963-),男,兰州大学资源环境学院教授、博士生导师。
- 如何获取foreach循环当前迭代的索引?
- 墙壁绘画机器人 ||arduino processing
- 【Python】二分法求函数零点
- 合并两个有序链表-c语言
- git 创库命令使用
- php数字和字母互换,PHP实现十进制数字与二十六进制字母串相互转换操作示例
- 使用pyTorch搭建自己的facenet
- weblogic常见问题QA
- Linux——读写锁
- Go:微服务框架介绍
- C4D 入门笔记(一)