做视频特效时常用一种画面拼接的手法,可以实现在一个场景中同一个人与自己同框做出不同动作的效果。

我们知道,从视频到图像,从图像到像素,这一层层深入下来,我们只要能操纵每一个像素点的值,就可以实现任意想要的移花接木效果。

下面,来尝试使用Python+opencv实现自己与自己同框的视频特效。

一、素材准备

要求同一个主体(人或动物、物体均可)在同一场景的不同位置拍摄两段视频。为了方便后切裁切,最好在镜头左端面向右端拍摄一段,然后在镜头右端面向左端拍另外一段。

二、特效处理思路

  1. 分别读取两个视频中的图像帧;
  2. 两帧图像分别进行裁切,分别保留每段视频的主体,切记在拼接的位置(左视频从右端拼接,右视频从左端拼接)对主体本身做了切割,这样效果出来很差;
  3. 将裁切好的两帧图像进行拼接,并调整了图像亮度,调整方法为:先将图像从BGR模式转为HSV模式,调节V(明度)值后,再转回BGR;
  4. 在指定帧上添加文字。

三、代码

# -*- 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:实现与自己同框对话的视频特效相关推荐

  1. Python+OpenCv实现AI人脸识别身份认证系统(2)——人脸数据采集、存储

    原 Python+OpenCv实现AI人脸识别身份认证系统(2)--人脸数据采集.存储 2019年07月02日 08:47:52 不脱发的程序猿 阅读数 602更多 所属专栏: 人脸识别身份认证系统设 ...

  2. 【优秀课设】基于OpenCV的Python人脸识别、检测、框选(遍历目录下所有照片依次识别 视频随时标注)

    基于OpenCV的Python人脸识别.检测.框选 (遍历目录下所有照片依次识别 视频随时标注) 移步: https://blog.csdn.net/weixin_53403301/article/d ...

  3. 要点初见:Python+OpenCV校正并提取表格中的各个框

    最近做了个手写汉字简历识别比赛,需要先提取表格中含有指定信息的各个框,再用TensorFlow对框中的信息进行汉字.数字.英文识别.代码已开源:https://github.com/BingLiHan ...

  4. Python OpenCV GrabCut进行前景分割和提取

    Python OpenCV GrabCut进行前景分割和提取 1. 效果图 1.1 边界框GrabCut效果图 1.2 Mask GrabCut效果图 2. GrabCut原理 2.1 GrabCut ...

  5. 使用Python,OpenCV在视频中进行实时条形码检测

    使用Python,OpenCV在视频中进行实时条形码检测 1. 步骤 2. 适用场景及优化 3. 总结 4. 源码 参考 上一篇博客介绍了如何检测和查找图像中的条形码.这篇博客将进行一些优化以检测实时 ...

  6. 使用Python+OpenCV+dlib为人脸生成口罩

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达推荐阅读 42个pycharm使用技巧,瞬间从黑铁变王者Google ...

  7. python opencv检测人脸

    python opencv检测人脸 文章目录: 一.opencv检测一张图片 二.opencv摄像头实时检测人脸 一.opencv检测一张图片 opencv检测人脸分成三部分: 1.图片转换成灰色(降 ...

  8. 【图像处理】——Python+opencv实现提取图像的几何特征(面积、周长、细长度、区间占空比、重心、不变矩等)

    转载请注明详细地址 本文简单介绍了图像常见几何特征的概念以及求解方法 本文介绍了Python和opencv求解几何特征的常用方法 目录 其他形状外接轮廓的方法可以参考:<OpenCV-Pytho ...

  9. AI新时代-大神教你使用python+Opencv完成人脸解锁(附源码)

    摘要: 好吧,伙计们,我回来了.说我拖更不写文章的可以过来用你的小拳拳狠命地捶我胸口.... 那么今天我们来讲关于使用python+opencv+face++来实现人脸验证及人脸解锁.代码量同样不多, ...

  10. python+opencv实现机器视觉基础技术(2)(宽度测量,缺陷检测,医学检测

     本篇博客接着讲解机器视觉的有关技术和知识.包括宽度测量,缺陷检测,医学处理. 一:宽度测量   在传统的自动化生产中,对于尺寸的测量,典型的方法就是千分尺.游标卡尺.塞尺等.而这些测量手段测量精度低 ...

最新文章

  1. 什么是数据中台?全面解读数据中台
  2. java Launcher源码_Launcher3源码浅析(5.1)--Launcher.java
  3. python xlwings api_Python - xlwings基本使用
  4. TCP状态转移:有限状态机
  5. L1-057 PTA使我精神焕发 (5 分)-PAT 团体程序设计天梯赛 GPLT
  6. 第一篇博客《import tensorflow的问题解决》
  7. as导入项目没有gradle文件夹_【Studio】导入其他项目卡死
  8. Eclipse导入Android项目 Eclipse常见错误 中文乱码问题
  9. IOS开发之Target-Action模式
  10. 五、谈扩展方法的理解
  11. select和epoll
  12. C#读取TIFF文件
  13. 手机word如何转换html,如何把Word转换为网页html格式
  14. 数学分析中的点荟萃(持续补充修缮)
  15. 中国电信 smgp java_smgp.java~1~ 源代码在线查看 - 中国电信小灵通短信平台SP端程序 资源下载 虫虫电子下载站...
  16. 阿里90后运营的工作总结,细致而深刻!
  17. 将前端网页生成二维码
  18. python实训报告万能模板_实训报告万能模板五篇
  19. php网络通讯,Linux_网络通讯--efax,功能说明:收发传真。 语  - phpStudy
  20. 【牛客练习赛59】A:小乔和小灰灰

热门文章

  1. 零基础如何学习计算机语言
  2. python身高体重程序代码_python EM算法4(身高体重数据集)
  3. virtualbox 创建桥接网络_VirtualBox 配置虚拟网卡(桥接),实现主机-虚拟机网络互通...
  4. 在线一元二次方程式计算器 源码
  5. 一百馒头一百僧升级版
  6. 示波器X-Y模式显示利萨如(李沙育)与DIY图像
  7. Android网上购物商城测试,Android 应用上架小米商城Monkey 测试不通过
  8. Element-Ui组件 单选框(Radio) 修改点击激活时的文本颜色,填充色和边框色
  9. 解决pycharm终端/cmd运行python脚本报错“ImportError/ModuleNotFoundError:No Module named ...”
  10. 启用静态NVI的NAT的配置步骤及示例