利用python提取视频中的字幕

``




一、导包

import base64
import os
import cv2
import requests
import aip
from aip import AipOcr

1.cv2报错

解决办法:打开Anaconda Prompt,输入pip install opencv-python,等待安装。

  1. aip报错
    解决办法:pip install baidu-aip

  2. 在pycharm中使用anaconda包
    File–> Settings–>Project Interpreter



    找到Anacondad的安装路径中的python.exe就OK了。

二、解析视频

将视频间隔10帧取图片

def VLink():video_path = 'D:/Resource/MaxFish.mp4'  # 视频地址images_path = 'D:/Resource/images/'  # 图片输出文件夹interval = 10  # 每间隔10帧取一张图片num = 1vid = cv2.VideoCapture(video_path)#打开这个视频while vid.isOpened():is_read, frame = vid.read()  #按帧读取视频  frame是读取图像  is_read是布尔值。文件读取到结尾返回FALSEif is_read:file_name =  numcv2.imwrite(images_path + str(file_name) + '.jpg', frame)cv2.waitKey(1)  num += 1else:break

结果:

三、截取字幕

将图片中的字幕部分截取出来

def tailor(path1,path2,begin ,end,step_size):for i in range(begin,end,step_size):fname1 = path1%str(i)print(fname1)img = cv2.imread(fname1)  #像素print(img.shape)cropped = img[650:720, 300:1024]  # 裁剪坐标为[y0:y1, x0:x1]imgray = cv2.cvtColor(cropped, cv2.COLOR_BGR2GRAY)thresh = 200ret, binary = cv2.threshold(imgray, thresh, 255, cv2.THRESH_BINARY)  binary1 = cv2.bitwise_not(binary)  cv2.imwrite(path2 % str(i), binary1)
cropped = img[650:720, 300:1024]这里的截取可能因为照片的大小不同而不同,可以编辑照片,看一下适合字幕截取的位置。例如:


通过 鼠标的移动知道截取图片的位置。
结果:

四、解析图片

解析图片,获得字幕,保存在TXT文档中。
1、

def subtitle(fname,begin,end,step_size):array =[] #定义一个数组用来存放wordsfor i in range(begin,end,step_size): fname1 = fname % str(i)   #字幕image D:/Resource/images/img_subtitle/100.jpgwith open(fname1, 'rb') as fp:image =  base64.b64encode(fp.read())try:results = requestApi(image)["words_result"] #调用requestApi函数,获取json字符串中的words_resultfor item in results:print(results)array.append(item['words'])except Exception as e:print(e)text=''result = list(set(array))  # 去重result.sort(key=array.index) # 排序for item in result:text +=item+'\n'

2、

# 定义一个函数,用来访问百度API,
def requestApi(img):general_word_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"params = {"image": img,"language_type": "CHN_ENG"}access_token = '24.80669db308b385e6f913e40b3fe604d1.2592000.1651237616.282335-25877315'request_url = general_word_url + "?access_token=" + access_tokenheaders = {'content-type': 'application/x-www-form-urlencoded'}response = requests.post(request_url, data=params, headers=headers)results = response.json()return results

百度智能云:
网址:https://login.bce.baidu.com



点击创建应用,写个名称就创建成功了。

在这里可以看见API Key和Secret Key,我们需要用这两个参数获取

点击左边的导航栏的技术文档---->API文档----->通用场景文字识别------>可以选择标准版

告诉了我们了如何获取Access Token。
复制链接:https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=mGAOwUKl42RM93TAWEmHZ3ff&client_secret=RGlbvPF49FGpqLiMVhFow1xfXp4EAvWAA&

这里的grant_type固定为client_credentials
client_id === API Key
client_secret == Secret Key


将你自己申请的API Key和Secret Key替换掉就可以了,回车获得access_token

这样就可以了。
如果想在代码中查找access_token。可以如下:

def get_access_token():url = 'https://aip.baidubce.com/oauth/2.0/token'data = {'grant_type': 'client_credentials',  # 固定值'client_id': 'eFGwDIb*******HucbnPr',  # API Key'client_secret': 'XPxWT2L********PFVCKS6PVih'  # Secret Key}res = requests.post(url, data=data)res = res.json()print(res)access_token = res['access_token']return access_token

问题:KeyError: ‘words_result’
解决办法:

(1)进入百度智能云,点击领取免费资源

(2)进入后,会有一个通用场景识别,选择“全部”,然后进行领取(这里因为我已经领过了,所以就没有显示了);

(3)领取后,回到刚刚那个界面,查看“资源列表”,可以看到自己已经领取的资源;


(4)如果使用后还出现这种情况,搜索:https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic?access_token=24.80669db308b385e6f913e40b3fe604d1.2592000.1651237616.282335-25877322
查看出现的数字:

如果是17,可以实名认证,就会增加调用量。

3、
在D:/Resource/下创建一个subtitle.txt,将提取出来的字幕写进去。

#创建文本
def text_create( msg):full_path = "D:/Resource/subtitle.txt"  # 也可以创建一个.doc的word文档file = open(full_path, 'w',encoding='utf-8')file.write(msg)file.close()

五 、主函数

if __name__ == '__main__':path1 = 'D:/Resource/images/%s.jpg'  # 视频转为图片存放的路径(帧)path2 = 'D:/Resource/images/img_subtitle/%s.jpg'  # 图片截取字幕后存放的路径print("""1..裁剪视频2.图片裁剪3.提取字幕""")choose = input()begin = 100end = 1000step_size = 10if choose == '1': #视频中提取图片VLink()if choose == '2': #提取字幕tailor(path1, path2, begin, end, step_size)if choose == '3':  #提取字subtitle(path2, begin, end, step_size)

借鉴:https://blog.csdn.net/qq_39783601/article/details/105748486

利用python提取视频中的字幕相关推荐

  1. python 替换array中的值_利用Python提取视频中的字幕(文字识别)

    我的CSDN博客id:qq_39783601,昵称是糖潮丽子~辣丽 从今天开始我会陆续将数据分析师相关的知识点分享在这里,包括Python.机器学习.数据库等等. 今天来分享一个Python小项目! ...

  2. access数据放到list中_利用Python提取视频中的字幕(文字识别)

    我的CSDN博客id:qq_39783601,昵称是糖潮丽子~辣丽 从今天开始我会陆续将数据分析师相关的知识点分享在这里,包括Python.机器学习.数据库等等. 今天来分享一个Python小项目! ...

  3. 利用Python提取视频中的字幕(文字识别)

    学了好久机器学习的内容有些许枯燥,今天我们来做一个Python的小项目来玩耍吧! 文字识别 项目背景 需求阐述 思路 首先导包 代码详情 裁剪视频 创建文本 判断中文 截取字幕 访问百度API 读取图 ...

  4. python提取视频字幕_荐利用Python提取视频中的字幕(文字识别)

    学了好久机器学习的内容有些许枯燥,今天我们来做一个Python的小项目来玩耍吧! 项目背景 通过获取百度API实现视频文字识别. 需求阐述 将.MP4格式视频裁剪成一帧一帧的图片再将图片中的字幕摘取出 ...

  5. python提取视频字幕_利用Python提取视频中的字幕(文字识别)

    我的CSDN博客id:qq_39783601,昵称是糖潮丽子~辣丽 从今天开始我会陆续将数据分析师相关的知识点分享在这里,包括Python.机器学习.数据库等等. 今天来分享一个Python小项目! ...

  6. 如何利用python提取字符串中的数字

    目录 一.isdigit() 函数 二.filter() 函数 三.提取一段字符串中的数字 四.匹配指定字符串开头的数字 参考资料 一.isdigit() 函数 isdigit() 函数是检测输入字符 ...

  7. python 提取视频中的音频 | Python工具类

    目录 前言 环境依赖 工具代码 总结 前言 利用Python的ffmpy库提取视频中的音频.本文提供工具类代码. 环境依赖 需要安装ffmpy,安装指令: pip install ffmpy -i h ...

  8. 分享3个实用工具,提取视频中的字幕其实可以很轻松

    在当前日益普及的在线学习环境中,许多学习者可能会遇到各种外语视频内容,对于这些内容的理解可能会受到语言障碍的困扰.此时,将视频字幕提取出来可以帮助学习者更好地理解视频内容,提高学习效率. 所以今天我整 ...

  9. python提取图片文字视频教学_用Python提取视频中的图片

    小编自己码的通用型函数,支持各种常用视频格式,可满足常用需求,亲测效果和速度都不错. 想获取本文数据和完整代码的下载链接,请关注微信公众号"R语言和Python学堂",并回复发文日 ...

最新文章

  1. 插入排序InsertionSort(Python实现)
  2. layui分页limit不显示_小心避坑:MySQL分页时使用 limit+order by 会出现数据重复问题...
  3. 使用事务码DBCO实现SAP链接外部数据库以及读取例程
  4. 基于PostgreSQL流复制的容灾库架构设想及实现
  5. 孙鑫VC学习笔记:第十七讲 (一) 用剪贴板实现进程间的通信
  6. NGUI无限滚动列表实现滑动条
  7. 三分钟细数几款可视化前端开发工具
  8. New Windows Vista Includes ActiveSync
  9. JUC- 常用辅助类
  10. python歌词图表分析_Python可视化图分析毛不易的《入海》,看看听歌的人都在想些什么...
  11. html图片撑开盒子,css背景图撑开盒子高度
  12. Spring Boot 项目 - API 文档搜索引擎
  13. 照片修复校正DxO ViewPoint 3
  14. bowtie里的FM-index简介
  15. python刷今日头条访问量_Python 自动刷博客浏览量实例代码
  16. 1985—1990年《ISTP》收录的世界主要国家(地区)科技会议论文情况
  17. cocos2dx 字体外发光_cocos2d-x位图字体生成工具bmfont使用图文教程 美术字使用
  18. JSON格式化异常:JsonMappingException
  19. 基于开源IM即时通讯框架MobileIMSDK:RainbowChat v8.3版已发布
  20. 轻松构建网络负载平衡群集(组图)

热门文章

  1. Font-Awesome最新版完整使用教程
  2. 一周技术学习笔记(第81期)-《愿生命从容》
  3. 浏览器主页被搜狗篡改
  4. outlook登录QQ邮箱
  5. Chrome侧边栏书签插件 Candy Bookmarks Sidebar
  6. 什么是 ASP.NET
  7. 罪恶装备X出招表[zz]
  8. Jupyter Notebook切换conda虚拟环境
  9. 第二集:你真的会吸气吗 ?科学呼吸法(汇播课程演说笔记)
  10. Python筛选某列满足条件的值(isin用法)