AI陪你看《动物世界》

人工智能识别视频小动物

项目地址(fork即使用)AI陪你看《动物世界》

哔站:哔哩哔哩

GitHub:Github

原理:对视频每一帧进行识别动物并生成新视频(带有识别标识)使用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)):  # 判断是否OpenCV图片类型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)# 转换回OpenCV格式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') # avi DIVX  mp4vvideoWriter = cv2.VideoWriter('saveVideo.mp4',fourcc,fps,(1280,720))#视频地址,视频编码,帧率,画面大小(要和图片一致)print (cap.isOpened() )success = Truei = 1while(success): success, frame = cap.read() if success==False:breakcv2.imwrite("video.jpg" , frame) if i%5==1 :       #每5帧判断一次i=2result = 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)        #把图片写进视频# cv2.imshow("animals",img)    if cv2.waitKey(100) & 0xff == ord('1'):#按下1退出break  i+=1cap.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.audioaudio.write_audiofile('test.mp3')               #  提取原视频声音
ioaudio.write_audiofile('test.mp3')               #  提取原视频声音open(path)

运行脚本完成后,.mp3和.mp4就是我们AI识别后的视频了

问:为什么要提取mp3?

答:最后获取的视频时在原视频转换成图片进行Ai识别后合并成的并不存在音频,所以需要将原视频的音频提取(mp3只是音频格式,也可以使用其他的),在将获取到的视频和音频合并,就是我们想要的结果

问:python这么强大,不能把视频和音频合成吗?

答:之前试过sox用于合成视频,搞了一晚上也没弄好(菜是原罪),有兴趣的小伙伴可以自己尝试下(弄好的话记得给俺评论下,在线‘白嫖’,哈哈哈)

个人主页:我在AI Studio上获得钻石等级,点亮9个徽章,来互关呀~乌拉__----

【AI创造营】AI陪你看《动物世界》相关推荐

  1. Metaverse启动机之重构现世,AI创造营创意赛开启

    ibrandup @shadow 听说最近又有好玩的竞赛啦? Metaverse启动机 2021.7.9 AI创造营 创意赛正式发布 近日,由百度大脑AI Studio平台发布,PaddlePaddl ...

  2. 【AI创造营】基于PaddleHub与Jetson Nano的智能宠物看护助手

    基于PaddleHub与Jetson Nano的智能宠物看护助手 一.效果展示 二.实现思路 1.训练一个适用于该需求的模型 2.使用PaddleHub预训练模型 三.数据采集 硬件部分 代码部分 四 ...

  3. [AI创造营]Wechaty实用小工具---九宫图爱心生成器~

    [AI创造营]Wechaty实用小工具-九宫图爱心生成器~ 项目地址: https://aistudio.baidu.com/aistudio/projectdetail/2300569 背景 跟随抖 ...

  4. AI创造营来了!万元奖金、Switch等你来拿...

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 朋友,看青你和创了吗? 牛年最先牛起来的无疑是这两档选秀节目,100多位小哥哥轮番上阵,每个观众都能pick ...

  5. 【AI创造营】是极客就坚持一百秒?

    因为项目需要用到摄像头和显示效果,所以无法在aistudio上直接运行,Fork项目后可见可运行文件,下面直接上效果 [AI创造营]是极客就坚持100秒 参赛作品名 是男人就坚持100秒(DodgeF ...

  6. 【AI创造营】鬼畜小视频

    鬼畜小视频 AiStuido地址:[AI创造营]星爷:焦了诶,emmmm GitHub: -AI-emmmm BiliBili视频地址:星爷:焦了.菩提老祖:emmm~ 这里使用的PaddleGan的 ...

  7. 【AI创造营】决战二仙桥

    参赛作品名 [AI创造营]决战二仙桥(DodgeFace-EXQver) 作品简介 和前作DodgeFace操作方式一样,内部使用的技术换了:之前是ace2p,如果电脑配置不好的话,可能跑起来非常的卡 ...

  8. [AI创造营]Wechaty实用小工具---证件照助手

    [AI创造营]Wechaty实用小工具-证件照助手 项目地址: https://aistudio.baidu.com/aistudio/projectdetail/2253862 你是否苦恼于没有条件 ...

  9. AI创造营~AnimeGAN一键生成日系动漫Vlog

    目录: AI创造营-AnimeGAN一键生成日系动漫Vlog 引子 效果展示图 动漫化结果 一.安装相关的库 二.函数 三.从视频提取图像 四.图像转换为动漫风格并合成新的视频 五.添加原始音频 六. ...

  10. Mixlab 【AI创造营】 百度飞桨创意赛 参赛项目介绍

    Mixlab [AI创造营] 百度飞桨创意赛 参赛项目介绍 项目名称 个性图腾-灵魂使者 Stand by me 作品简介 Jojo立的具象版,从此路人也能看到灵魂使者了! 不用再担心你熊熊燃烧的中二 ...

最新文章

  1. suricata规则
  2. Longest Substring Without Repeating Characters(最长不重复子序列求解)
  3. CSS浮动属性Float到底什么怎么回事,下面详细解释一下
  4. 面象对象设计6大原则之一:单一职责原则
  5. q7goodies事例_Java 8 Friday Goodies:java.io终于成功了!
  6. 管理(1)--- 管理者的基本要求是什么?
  7. 7个现象告诉你手游圈为什么会有寒冬
  8. seaJS 模块加载过程分析
  9. inittab 分析
  10. Codeforces 165D Beard Graph 边权树剖+树状数组
  11. 清空SQL数据库日志
  12. 如何远程配置DHCP服务器
  13. wincc怎么做一个弹出画面_Wincc如何利用单个弹出窗口画面的模板,来实现调用多组画面参数?...
  14. Qt涂鸦板及其放大简例
  15. Conditional ternary operator...
  16. 什么软件可以截取电视剧视频片段?这3款软件极易上手!
  17. 怎样设置计算机默认字体及语言,电脑中默认输入法如何设置 Win7系统设置默认输入法技巧...
  18. dat图片 电脑端微信_微信电脑图片dat转为jpg
  19. 【工具使用系列】关于 MATLAB 多机电力应用,你需要知道的事
  20. mysql存储过程基础写法

热门文章

  1. MP4v2 Android
  2. count(1) 和count(*)哪个高效?
  3. vue查看pdf,禁止复制文字,禁止页面鼠标右击,禁用F12
  4. 申请二类医疗器械备案,对经营场地及人员有什么要求
  5. 下列不是C语言字符型常,以下选项中,()是不正确的C语言字符型常量。
  6. Java往文件里写入字符串_Java将字符串写入文本文件代码示例
  7. leetcode 编译错误member access within null pointer of type ‘TreeNode‘
  8. SDUT ACM 4078 女装大佬买地
  9. 以太坊区块链也拥堵_以太坊开发人员怀疑EOS刻意拥堵网络,ETH和EOS大战即将开启?...
  10. 以太坊拥堵持续加重,谁能弯道超车?