快捷搜索:  手机  明星

字幕提取软件离线(115.人工智能基于PaddleOcr的字幕快速提取)

字幕提取软件离线(115.人工智能基于PaddleOcr的字幕快速提取)输出结果: ['我可以把30年的经验' '变成一个准确的算法' '不可能' '当我说' '我们10个人就能实现' '对19个城市变电站' '7x24小时的实时监管' '不可能' '当我说' '我能把35 种机器的声音' '翻译成人话' '他们说' '当我说' '我能看出2000万亩' '农作物的生长情绪' '他们说' '不可能' '说不可能的人' '总有各种各样的理由' '拒绝伟大的 发生' '妈妈加油!' '

在前面有讲过图像文字识别的内容,详情可以参看:85.人工智能——PyQt 图像文字识别。本文主要演示一下如何提取视频中的字幕。

字幕提取软件离线(115.人工智能基于PaddleOcr的字幕快速提取)(1)

实现思路:

1、读取视频文件,获取视频文件的帧率和总帧数。

2、遍历视频所有帧,根据帧率,计算要识别的视频画面上的文字。

这里对帧的图像做一个处理,只选取字幕那部分区域,可以减少资源消耗,加快字幕提取速度。

3、为了防止前后帧重复,做一个简单的前后帧的文字对比。

文字识别使用的是PaddleOcr。(本机CPU环境)

实现代码

import cv2 import os from tqdm import tqdm import paddleocr import time video_path = "img/paddle-info.mp4" cap = cv2.VideoCapture(video_path) #帧数,视频的总帧数,视频的总时长 fps=int(cap.get(cv2.CAP_PROP_FPS)) total_frames=int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) total_time=total_frames/fps print("fps:" fps "total_frames:" total_frames "total_time:" total_time) #创建一个ocr实例 ocr=paddleocr.PaddleOCR(use_angle_cls=True lang="ch") txtlst=[] start_time=time.time() k=0 #k=0前一帧,k=1当前帧 for i in tqdm(range(total_frames)): ret frame=cap.read() frame=frame[-64: :] if ret: if (i % fps==0 and k==0) : #调用ocr识别函数 提取文字 result=ocr.ocr(frame) if len(result)>0: pretxt=result[0][1][0] #前一帧的第一行文字 k=1 if (i % fps==0 and k==1) : #调用ocr识别函数 提取文字 result=ocr.ocr(frame) if len(result)>0: curtxt=result[0][1][0] #当前一帧的第一行文字 #如果前一帧和当前帧的文字不一样,则保存文字, if pretxt!=curtxt and pretxt!="" : txtlst.append(pretxt) #print(pretxt) #交换前一帧和当前帧 pretxt=curtxt curtxt="" #显示图像 cv2.imshow("img" frame) cv2.waitKey(1) print(txtlst) #计算耗时 duration=time.time()-start_time print("字幕提取耗时,视频时长,:" duration total_time) cap.release() cv2.destroyAllWindows()

字幕提取软件离线(115.人工智能基于PaddleOcr的字幕快速提取)(2)

运行画面

输出结果: ['我可以把30年的经验' '变成一个准确的算法' '不可能' '当我说' '我们10个人就能实现' '对19个城市变电站' '7x24小时的实时监管' '不可能' '当我说' '我能把35 种机器的声音' '翻译成人话' '他们说' '当我说' '我能看出2000万亩' '农作物的生长情绪' '他们说' '不可能' '说不可能的人' '总有各种各样的理由' '拒绝伟大的 发生' '妈妈加油!' '但创造不可能的人' '却找到了相同的路' '他们不甘心' '他们' '跑个不停' '她' '通过AI识别卫星遥感数据' '快速获得精准的农耕地块信息' ' 用一个平台' '指导2000万亩的农业生产' '普通农户真的很辛苦' '灌溉、施肥、病虫害防治' '一个环节出问题' '一年的收成就没了' '现在我们的技术' '改变了由间农作 日常' '也们打开手机就能看到作物生长情况' '他们打开手机就能看到作物生长情况' '浇水、施肥、杀虫' '看一眼就能准确安排上' '她' '两个月跑了100多家工厂' '用 代码' '把老师傅要30年' '才能练成的配料经验' '跑成了3秒就能给出最优配比的模型' '我想真的做点事' '让这个行业的门槛降下来' '用新技术打磨老经验' '让小师傅' '也能撑起钢铁制造的一片天' '大家叫他天方夜谭' '因为' '他居然提出用声音' '帮机器看病' '他用飞桨' '听机器运转的声音' '对千台机器的动态情况' '了然于心' '机器来自五湖四海' '都是独立工作' '生产线一旦出问题' '住往很难找到真正的病根' '现在通过听噪音' '为机器把脉' '1秒就可以定位' '诊断不同机器的病情' '用 半年的时间' '跑了30000行代码' '教19个城市的机器人' '掌握设备状态' '用飞桨' '实现了变电站设备' '365天的无人实时巡检' '过去跟着一线班组' '我们不是在巡检 ' '就是在去巡检的路上' '因为哪怕是一点疏忽' '都可能错过' '对重大风险隐患的提前预警' '现在都是机器去巡检了' '机器不仅看得快还准' '当你每说一次不可能的时 候' '都是在拒绝伟大的发生' '和眼前的困难握手言和' '就是和下一个时代擦肩而过' '越是被说不可能' '越要创造' '无限可能'] 字幕提取耗时,视频时长,: 898.1502647399902 235.64

提取字幕的准确率能达99%以上。效果还是可以的。

猜您喜欢: