《最强法海》人脸检测(我一眼就看出你不是人)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

先上几张动图(CSDN没法传视频,放在B站又怕侵权)
创意来自Ryan huang 这位博主的博客,当时看了觉得很有趣,就想自己试一试,选的是推背兔的最强法海(大胆妖孽,我一眼就看出你不是人)。获取B站视频可以看我之前的文章。
代码也是参考的Ryan huang这位博主的,大体过程就是先将视频按帧分为图片,然后对每张图片进行人脸识别检测,最后将检测结果再合为视频。人脸检测用的模型是paddlehub中已经训练好的模型,所以代码量很少,操作比较简单。最后合成的视频是没有声音的,我是通过kdenlive软件在本地合成的,这样简单一点。
还有一个问题是这个代码在进行人脸检测的时候卡的不行,电脑都卡成PPT,我也不知道为什么,所以如果要选择视频的话尽量选择小一点的,清晰度差一点的,我当时选的超清画质,大概才29M左右的样子的,就卡的我怀疑人生,我甚至以为我电脑要坏了,所以选择视频的时候最好不要超过10M。
代码如下:

#-*- coding:UTF-8 -*-
import os
import cv2
import json
import numpy as np
import paddlehub as hub
import matplotlib.image as mping
import matplotlib.pyplot as plt
from tqdm import tqdm
video = cv2.VideoCapture("/home/tanronkai/baidunetdiskdownload/video.mp4")

fps = video.get(cv2.CAP_PROP_FPS)#视频帧率
frameCount = video.get(cv2.CAP_PROP_FRAME_COUNT)#获取视频的总帧数
width = video.get(cv2.CAP_PROP_FRAME_WIDTH)#获取视频的宽度
height = video.get(cv2.CAP_PROP_FRAME_HEIGHT)

print('视频的宽度:{}'.format(width))
print('视频的高度:{}'.format(height))
print('视频帧率:{}'.format(fps))
print('视频总帧数:{}'.format(frameCount))

if not os.path.exists('frame'):
	os.mkdir('frame')

all_img = []
all_img_path_dict = {'image':[]}

ret,frame = video.read()
i = 0
while ret:

	all_img.append(frame)
	i += 1
	ret,frame = video.read()
	if ret:
		path = os.path.join('frame',str(i)+'.jpg')#用于名称拼接,输出1.jpg
		all_img_path_dict['image'].append(path)
		#cv2.imwrite(path,frame)

all_img_path_dict['image'].pop()

print('完成!')



module = hub.Module(name="ultra_light_fast_generic_face_detector_1mb_640")

results = module.face_detection(data=all_img_path_dict,
				use_gpu=True,
				visualization=True)


for i,info in tqdm(enumerate(results)):

	num_info = info['data']

	if not len(num_info):
		frame = (all_img[i][:,:,::-1]).copy()
	else:
		frame = mping.imread(info['path'].replace('frame','face_detector_640_predict_output'))

	plt.imsave('./img_out/{}.jpg'.format(i),frame)#要先创建一个img_out文件夹

这时候我们就可以看到img_out文件夹中就是我们想要的图片了,我们下一步要做的就是将文件夹中的图片变为视频,通过ffmpeg来实现(没有安装的话请自行搜索安装)
在终端中进入img_out所在的文件夹,输入以下命令:

ffmpeg -f image2 -i img_out/%d.jpg   -r 60.0  temp.mp4

视频便生成了,但是生成的视频没有声音,我是通过视频剪辑软件来添加音频的,我在Ubuntu系统下使用的Kdenlive,添加音频不是很麻烦,有兴趣的可以试一下。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值