AI陪你看《动物世界》
人工智能识别视频小动物
原理:对视频每一帧进行识别动物并生成新视频(带有识别标识)使用PaddleHub的mobilenet_v2_animals模型识别视频,
还记得中央频道的《动物世界》么,童年~~
每一期都有新的主题,还是百看不厌,如今AI这么火,哪里能没有AI嘞!!!
下面教大家五十行代码,带你走进Ai的《动物世界》
开始前有必要提醒下,导入的python包有些同学的环境可能没有安装
还是需要手动下载的,直接在cmd pip install 包名
即可这里不做演示了哈
1.导入包
这些都是常用的Opencv,PaddleHub,numpy,time还有画图和编辑视频用的 moviepy 和 PIL
import cv2
import paddlehub as hub
import numpy
import time
from moviepy.editor import *
from PIL import Image, ImageDraw, ImageFont
2.图片转类型
因为我们接下来要将Ai识别的结果导入到 视频里面,所以我将视频内的每一帧都保存成图片,并转化成可以在图像上绘图的对象,添加上识别的结果,以便操作
def cv2ImgAddText(img, text, left, top, textColor=(0, 255, 0), textSize=20):
if (isinstance(img, numpy.ndarray)):
img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
draw = ImageDraw.Draw(img)
fontStyle = ImageFont.truetype(
"font/simsun.ttc", textSize, encoding="utf-8")
draw.text((left, top), text, textColor, font=fontStyle)
return cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR)
3. 读取视频帧并存储新的视频
读取视频内每一帧,并且每5帧识别一次图片,将结果添加到帧上面,且一边读取一边写入输出的视频
def open(path):
cap = cv2.VideoCapture(path)
fps = cap.get(cv2.CAP_PROP_FPS)
print(fps)
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
videoWriter = cv2.VideoWriter('saveVideo.mp4',fourcc,fps,(1280,720))
print (cap.isOpened() )
success = True
i = 1
while(success):
success, frame = cap.read()
if success==False:
break
cv2.imwrite("video.jpg" , frame)
if i%5==1 :
i=2
result = classifier.classification(images=[cv2.imread(r'video.jpg')])
print(result)
font = cv2.FONT_HERSHEY_SIMPLEX
img = cv2ImgAddText(cv2.imread(r'video.jpg'), str(result[0]), 50, 130, (255, 255, 255), 25)
videoWriter.write(img)
if cv2.waitKey(100) & 0xff == ord('1'):
break
i+=1
cap.release()
cv2.destroyAllWindows()
videoWriter.release()
4.运行脚本,识别视频内动物
if __name__=='__main__':
classifier = hub.Module(name="mobilenet_v2_animals")
path=r"C:\Users\Skr-Skr-Skr\Desktop\dw1_1.mp4"
video = VideoFileClip(path)
audio = video.audio
audio.write_audiofile('test.mp3')
io
audio.write_audiofile('test.mp3')
open(path)
运行脚本完成后,.mp3和.mp4就是我们AI识别后的视频了
问:为什么要提取mp3?
答:最后获取的视频时在原视频转换成图片进行Ai识别后合并成的并不存在音频,所以需要将原视频的音频提取(mp3只是音频格式,也可以使用其他的),在将获取到的视频和音频合并,就是我们想要的结果
问:python这么强大,不能把视频和音频合成吗?
答:之前试过sox用于合成视频,搞了一晚上也没弄好(菜是原罪),有兴趣的小伙伴可以自己尝试下(弄好的话记得给俺评论下,在线‘白嫖’,哈哈哈)
个人主页:我在AI Studio上获得钻石等级,点亮9个徽章,来互关呀~乌拉__----