Python opencv:实现与自己同框对话的视频特效
做视频特效时常用一种画面拼接的手法,可以实现在一个场景中同一个人与自己同框做出不同动作的效果。
我们知道,从视频到图像,从图像到像素,这一层层深入下来,我们只要能操纵每一个像素点的值,就可以实现任意想要的移花接木效果。
下面,来尝试使用Python+opencv实现自己与自己同框的视频特效。
一、素材准备
要求同一个主体(人或动物、物体均可)在同一场景的不同位置拍摄两段视频。为了方便后切裁切,最好在镜头左端面向右端拍摄一段,然后在镜头右端面向左端拍另外一段。
二、特效处理思路
- 分别读取两个视频中的图像帧;
- 两帧图像分别进行裁切,分别保留每段视频的主体,切记在拼接的位置(左视频从右端拼接,右视频从左端拼接)对主体本身做了切割,这样效果出来很差;
- 将裁切好的两帧图像进行拼接,并调整了图像亮度,调整方法为:先将图像从BGR模式转为HSV模式,调节V(明度)值后,再转回BGR;
- 在指定帧上添加文字。
三、代码
# -*- coding: utf-8 -*-
"""
Created on Tue Sep 11 11:24:11 2018@author: Leon内容:
图像的处理与拼接"""
import numpy as np
import cv2
from PIL import Image,ImageDraw,ImageFontfourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.MP4',fourcc, 20.0, (640,480))cv2.namedWindow("test")
# 获取视频素材:这里读取的是你提前准备好的两段视频
video = cv2.VideoCapture('org.MP4',0)
video2 = cv2.VideoCapture('org2.MP4',0)def CH_WordDraw(img,text,size,x,y,r,g,b):# 添加中文函数:在原图上添加中文img_rbg = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)img_PIL = Image.fromarray(img_rbg)draw = ImageDraw.Draw(img_PIL)font = ImageFont.truetype('simhei.ttf',size,encoding='utf-8')draw.text((x,y),text,(r,g,b),font=font)return cv2.cvtColor(np.array(img_PIL),cv2.COLOR_RGB2BGR)kk=0
while video.isOpened()&video2.isOpened():_,frame = video.read()_2,frame2 = video2.read()kk=kk+1if not (_2&_):breakframe = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)frame2 = cv2.cvtColor(frame2,cv2.COLOR_BGR2HSV)frame[:,:,2] = frame[:,:,2]-3frame = cv2.cvtColor(frame,cv2.COLOR_HSV2BGR)frame2 = cv2.cvtColor(frame2,cv2.COLOR_HSV2BGR)img_video = frame[:,0:int(frame.shape[1]/2),:]img_video2 = frame2[:,int(frame2.shape[1]/2):,:]if kk>50:img_video = CH_WordDraw(img_video,'你是不是傻?',40,70,50,222,0,0)if kk >90:img_video2 = CH_WordDraw(img_video2,'······',40,50,100,222,0,0)img_out = np.hstack((img_video,img_video2))
cv2.adaptiveThreshold(frame,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,0)cv2.imshow("test",img_out)if cv2.waitKey(5)&0xFF==ord('q'):break# 保存视频out.write(img_out)#释放相关资源
video.release()
video2.release()
out.release()
cv2.destroyAllWindows()
效果如下(手动打了码[捂脸],如何给视频上的人脸打码,可查看我的另一篇博文:Python opencv:人眼/人脸识别并实时打码处理):
PS:关于如何使两个视频拼接边缘平滑过渡,我尚未进行深入研究,如果有懂这方面的朋友,也麻烦在评论区留言,不胜感激!
Python opencv:实现与自己同框对话的视频特效相关推荐
- Python+OpenCv实现AI人脸识别身份认证系统(2)——人脸数据采集、存储
原 Python+OpenCv实现AI人脸识别身份认证系统(2)--人脸数据采集.存储 2019年07月02日 08:47:52 不脱发的程序猿 阅读数 602更多 所属专栏: 人脸识别身份认证系统设 ...
- 【优秀课设】基于OpenCV的Python人脸识别、检测、框选(遍历目录下所有照片依次识别 视频随时标注)
基于OpenCV的Python人脸识别.检测.框选 (遍历目录下所有照片依次识别 视频随时标注) 移步: https://blog.csdn.net/weixin_53403301/article/d ...
- 要点初见:Python+OpenCV校正并提取表格中的各个框
最近做了个手写汉字简历识别比赛,需要先提取表格中含有指定信息的各个框,再用TensorFlow对框中的信息进行汉字.数字.英文识别.代码已开源:https://github.com/BingLiHan ...
- Python OpenCV GrabCut进行前景分割和提取
Python OpenCV GrabCut进行前景分割和提取 1. 效果图 1.1 边界框GrabCut效果图 1.2 Mask GrabCut效果图 2. GrabCut原理 2.1 GrabCut ...
- 使用Python,OpenCV在视频中进行实时条形码检测
使用Python,OpenCV在视频中进行实时条形码检测 1. 步骤 2. 适用场景及优化 3. 总结 4. 源码 参考 上一篇博客介绍了如何检测和查找图像中的条形码.这篇博客将进行一些优化以检测实时 ...
- 使用Python+OpenCV+dlib为人脸生成口罩
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达推荐阅读 42个pycharm使用技巧,瞬间从黑铁变王者Google ...
- python opencv检测人脸
python opencv检测人脸 文章目录: 一.opencv检测一张图片 二.opencv摄像头实时检测人脸 一.opencv检测一张图片 opencv检测人脸分成三部分: 1.图片转换成灰色(降 ...
- 【图像处理】——Python+opencv实现提取图像的几何特征(面积、周长、细长度、区间占空比、重心、不变矩等)
转载请注明详细地址 本文简单介绍了图像常见几何特征的概念以及求解方法 本文介绍了Python和opencv求解几何特征的常用方法 目录 其他形状外接轮廓的方法可以参考:<OpenCV-Pytho ...
- AI新时代-大神教你使用python+Opencv完成人脸解锁(附源码)
摘要: 好吧,伙计们,我回来了.说我拖更不写文章的可以过来用你的小拳拳狠命地捶我胸口.... 那么今天我们来讲关于使用python+opencv+face++来实现人脸验证及人脸解锁.代码量同样不多, ...
- python+opencv实现机器视觉基础技术(2)(宽度测量,缺陷检测,医学检测
本篇博客接着讲解机器视觉的有关技术和知识.包括宽度测量,缺陷检测,医学处理. 一:宽度测量 在传统的自动化生产中,对于尺寸的测量,典型的方法就是千分尺.游标卡尺.塞尺等.而这些测量手段测量精度低 ...
最新文章
- 什么是数据中台?全面解读数据中台
- java Launcher源码_Launcher3源码浅析(5.1)--Launcher.java
- python xlwings api_Python - xlwings基本使用
- TCP状态转移:有限状态机
- L1-057 PTA使我精神焕发 (5 分)-PAT 团体程序设计天梯赛 GPLT
- 第一篇博客《import tensorflow的问题解决》
- as导入项目没有gradle文件夹_【Studio】导入其他项目卡死
- Eclipse导入Android项目 Eclipse常见错误 中文乱码问题
- IOS开发之Target-Action模式
- 五、谈扩展方法的理解
- select和epoll
- C#读取TIFF文件
- 手机word如何转换html,如何把Word转换为网页html格式
- 数学分析中的点荟萃(持续补充修缮)
- 中国电信 smgp java_smgp.java~1~ 源代码在线查看 - 中国电信小灵通短信平台SP端程序 资源下载 虫虫电子下载站...
- 阿里90后运营的工作总结,细致而深刻!
- 将前端网页生成二维码
- python实训报告万能模板_实训报告万能模板五篇
- php网络通讯,Linux_网络通讯--efax,功能说明:收发传真。
语 - phpStudy
- 【牛客练习赛59】A:小乔和小灰灰
热门文章
- 零基础如何学习计算机语言
- python身高体重程序代码_python EM算法4(身高体重数据集)
- virtualbox 创建桥接网络_VirtualBox 配置虚拟网卡(桥接),实现主机-虚拟机网络互通...
- 在线一元二次方程式计算器 源码
- 一百馒头一百僧升级版
- 示波器X-Y模式显示利萨如(李沙育)与DIY图像
- Android网上购物商城测试,Android 应用上架小米商城Monkey 测试不通过
- Element-Ui组件 单选框(Radio) 修改点击激活时的文本颜色,填充色和边框色
- 解决pycharm终端/cmd运行python脚本报错“ImportError/ModuleNotFoundError:No Module named ...”
- 启用静态NVI的NAT的配置步骤及示例