import cv2
import ffmpeg
import cv2
import numpy as np
import globvideo_f = 'D:/CCTV/CCTV.mp4'  # 视频文件名
output_f = 'D:/CCTV/logoafter.mp4'  # 输出视频文件名
video = cv2.VideoCapture(video_f)
# 获取视频宽度
frame_width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))#480
# 获取视频高度
frame_height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))#852
start_x, start_y, w, h = 740, 420, 100, 28  # logo位置
logo_f = 'shrink.png'#读取png四通道的方式,一般imread读取不到真实图像的时候,要想到用imdecode的方式
logo = cv2.imdecode(np.fromfile(logo_f, dtype=np.uint8), cv2.IMREAD_UNCHANGED)
alpha = logo[..., 3]  #取出索引号为3的通道
alpha[alpha>0]=1   #透明度不为0的地方,置为1
alpha=np.expand_dims(alpha, axis=[-1])  #广播机制,扩充维度
#print(alpha.shape)logo = cv2.imread(logo_f)
logo = cv2.resize(logo, (w, h))
#print(logo.shape)ret, frame = video.read()
img_h, img_w = frame.shape[:2]
output_video = cv2.VideoWriter(output_f, cv2.VideoWriter_fourcc(*'MP4V'), 30, (img_w, img_h))idx = 0
#获取fps
fps = video.get(cv2.CAP_PROP_FPS)while True:ret, frame = video.read()#print(type(frame))#print(frame.shape)idx += 1if frame is None:breakif idx > 0 and idx < 20*fps:frame_mask = np.ones_like(frame)  #返回一个用1填充的形状和类型一样的数组,全黑。构造了一个与视频帧形状大小一样的全一的三维数组frame_mask[start_y:start_y + h, start_x:start_x + w, :] = 1-alpha  #将放置logo区域全部弄成0frame *= frame_maskframe[start_y:start_y + h, start_x:start_x + w, :] += logo*alpha   #空出来的黑色矩形区域,logo*alpha相当于logo*mask,alpha起到了当作过滤器的作用,当作mask使用output_video.write(frame)cv2.imshow('f', frame)cv2.waitKey(1)

1.读取四通道png  (RBGA),A:代表的是透明度通道alpha,也就是一张含有透明度的png图有四个通道,但是依旧是一个三维结构numpy数据存储在计算机内,就是类似于一本书,有四张纸,一张纸代表一个二维矩阵,四张代表有四个通道。

读取的方式要区别于平时读取三通道的图,要使用解码方式

cv2.imdecode(np.fromfile(logo_f, dtype=np.uint8), cv2.IMREAD_UNCHANGED)

2.应用到mask原理,将整个需要的地方置为1,不需要的地方置为0,矩阵点成之后就会保留想要的部分,截掉不想要的部分

alpha = logo[..., 3]  #取出索引号为3的通道
alpha[alpha>0]=1   #透明度不为0的地方,置为1
frame_mask = np.ones_like(frame)  #返回一个用1填充的形状和类型一样的数组,全黑。构造了一个与视频帧形状大小一样的全一的三维数组
frame_mask[start_y:start_y + h, start_x:start_x + w, :] = 1-alpha  #将放置logo区域全部弄成0
frame *= frame_mask
frame[start_y:start_y + h, start_x:start_x + w, :] += logo*alpha   #空出来的黑色矩形区域,logo*alpha相当于logo*mask,alpha起到了当作过滤器的作用,当作mask使用

png四通道透明背景图成功加入到视频帧中 使用了mask原理相关推荐

  1. vue 背景透明度_Visual Studio 2017 设置透明背景图

    一.前言 给大家分享一下,如何为VS2017设置透明背景图.下面是一张设置前和设置后的图片. 设置前: 设置后: 二.设置背景图片的扩展程序 我们打开VS的扩展安装界面:[工具]->[扩展和更新 ...

  2. vscode主题背景插件_vscode 全透明背景图

    一.前言 08.02更新:已魔改插件 可以直接下载插件使用了 10.18跟新:已发布到vscode扩展,直接搜索"background-cover"进行安装使用  下载地址 下载后 ...

  3. python抠透明图_python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图

    因为最近在做深度学习抠图,正好要用到蒙版进行抠图,所以我将抠图代码进行了封装注释,可以直接使用.可能走了弯路,若有高见请一定提出! 主要代码 import cv2 from PIL import Im ...

  4. Visual Studio 2019 设置透明背景图(傻瓜式教学)

    Visual Studio 2019 设置透明背景图 一.前言 二.设置背景图片的扩展程序 三.编辑主题 一.前言 给大家分享一下,如何为VS2019设置透明背景图.下面是一张设置后的图片. 二.设置 ...

  5. notepad设置背景颜色_Word2017中如何设置透明背景图和取消背景图

    如何在Word2017中设置透明背景图 1.打开Word文档 2.选择"插入"-"形状",选择并绘制你所需要的背景图形状 3.选中所绘的形状,点击右键,选择&q ...

  6. gif透明背景动画_PS实用技巧——视频转GIF

    GIF原意为原义是"图像互换格式",它分为静态GIF和动画GIF两种,在文件上的扩展名为.gif,是一种压缩的位图格式,支持透明背景,适用于多种操作系统.它具有内存小,效果强的特点 ...

  7. 同时为多个竖屏视频加背景图变成横屏的视频

    视频剪辑高手可以同时为多个尺寸相同的竖屏视频添加背景图,使之变成横屏播放的视频吗?小编的回答当然是可以的,下面一起来试试. 所需工具 视频剪辑高手 多段竖屏视频素材 一张横版图片 实例步骤 将需要剪辑 ...

  8. opencv 三通道图像转四通道透明图像

    添加透明通道. 使用split(),merge(),合成图像通道. 把3通道的rgb转为4通道,设置alpha=0.并保存图像. #include <opencv2/opencv.hpp> ...

  9. 【模仿案例】input插入透明背景图并设置背景色

    一.实现效果 二.分析需求: 1.圆角矩形文本框 2.左侧有一个搜索的小logo 3.内置有emoji和文字 三.实现思路 1.采用子绝父相定位 如果想将元素定位在一个具体的范围之内,又想让这个元素的 ...

最新文章

  1. 多尺度人脸检测--Face Detection through Scale-Friendly Deep Convolutional Networks
  2. 如何修改Chrome默认字体
  3. 提升Azure App Service的几个建议
  4. 计算机科学与应用考研题,2015年中科院计算机科学综合考研真题
  5. 在Tomcat 与weblogic 中的 日志(log4j) 配置系列一
  6. 决策树剪枝算法(二)
  7. bootstrap 图标 由Glyphicons提供
  8. 解决sublime text 3使用Install Package时出现There are no packages available for installation问题
  9. 数组与数组冒泡排序,选择排序
  10. informix 访问mysql_Informix 11.7 使用非系统用户访问数据库
  11. 2k显示无法连接服务器,NBA2K18无法连接服务器怎么办 无法连接服务区解决方法一览...
  12. java.lang.NoClassDefFoundError:org.ksoap2.seri...
  13. illustrator插件-拼版功能开发-裁切标记-js脚本开发-ai插件
  14. php vox转码,Audio Track Convert Tool(音轨转码工具)
  15. OOP Class具体解释
  16. 新人小白的第一次天池比赛感受
  17. 服务器系统防火墙设置在哪里设置方法,服务器怎么设置防火墙设置在哪里
  18. Windows的NSIS ERROR
  19. Pillow库学习笔记之Image.convert去底色详解
  20. 颜色 /About Color --图形学的B面(二)

热门文章

  1. 《国富论》阅读笔记04
  2. LTE无线连接过程--网络接入过程
  3. 装机必备:功能强大的硬件和系统基准信息检测软件 EVEREST Ultimate Edition 5.02.1805...
  4. Unity使用滚动条Slider控制声音音量
  5. 数字频率与模拟频率的转化
  6. 重庆Digital_River营销会议内容
  7. 视频插件—zy.media.js
  8. x265源码分析 main函数 x265.cpp
  9. 极验滑块4代js逆向
  10. 思维导图学习4——技巧2