android 视频文字提取软件,视频字幕提取神器,你不会还在用手记笔记吧?支持所有视频!...

[Python] 纯文本查看 复制代码# encoding:utf-8

import requests,time,cv2

import base64,copy

from PIL import Image

class Baiduorc():

def __init__(self,AK,SK,MS=1):

self.AK=AK

self.Sk=SK

self.MS = MS

host = f'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={AK}&client_secret={SK}'

try:

response = requests.get(host)

if response:

access_token = response.json()['access_token']

self.access_token = access_token

else:

self.access_token = None

except:

self.access_token = None

#获取鉴权接口,就是身份验证...

def get_text(self,imagePath):

'''

识别文字

:param imagePath: 图片地址

:return: 返回结果

'''

if self.MS==1:

request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"

else:

request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"

# 二进制方式打开图片文件

with open(imagePath,'rb')as f:

img=f.read()

img = base64.b64encode(img)

params = {"image": img}

access_token = self.access_token

request_url = request_url + "?access_token=" + access_token

headers = {'content-type': 'application/x-www-form-urlencoded'}

response = requests.post(request_url, data=params, headers=headers)

if response:

return response.json()

else:

return None

if __name__ == "__main__":

print('高精度的接口次数有限,请自己去注册[url]https://cloud.baidu.com/product/ocr_general'[/url])

MS=int(input("请选择调用精度:1普通识别,2高精度识别\n"))

mp4Name=input('请输入你的视频文件的完整目录和文件名:默认为 下载.mp4\n')

if mp4Name==None or mp4Name=='':

mp4Name='下载.mp4'

rectangle= input('请输入字幕的矩形范围格式为:x1,y1,x2,y2 默认为:36,292,598,330 如果输入0则为全屏 \n矩形坐标可以先默认,然后运行显示起来用截图工具把字幕矩阵区域的坐标搞到来!\n')

if rectangle==None or rectangle=='':

rectangle=[36,292,598,330]

elif rectangle=='0':

pass

else:

rectangle =rectangle.split(',')

timeS=input('请输入视频截图间隔多少帧,默认为60\n')# 视频帧计数间隔频率

if timeS==None or timeS=='':

timeS=60

else:

timeS=int(timeS)

#百度识字

# client_id 为官网获取的AK, client_secret 为官网获取的SK

with open('百度ak和sk.txt','r')as f:

ak_and_sk=f.read()

ak_and_sk=ak_and_sk.split('\n')

AK = ak_and_sk[0].split('"')[1]

SK = ak_and_sk[1].split('"')[1]

print('百度ak和sk',AK, SK)

bd = Baiduorc(AK=AK, SK=SK,MS=MS)

imagePath = "1.png"#临时存放目录

c = 0

cap = cv2.VideoCapture(mp4Name)

last_text=''

now_text=''

text=''

while (cap.isOpened()):

c = c + 1

ret, frame = cap.read()

frame

if c%timeS==0: # c除尽timeS时取帧保存,图片,即隔timeS保存一次图片

#cv2.imwrite(imagePath,frame)

#img = cv2.im(frame)

#37,297,534,336

if rectangle=='0':#全屏识别

cv2.imwrite(imagePath, frame)

else:

try:

frame_jq=frame[rectangle[1]:rectangle[3], rectangle[0]:rectangle[2]]

cv2.imwrite(imagePath, frame_jq)

except:

break

jstext = bd.get_text(imagePath)

try:

now_text=jstext['words_result'][0]['words']

if now_text!=last_text:

text=text+now_text+'\n\r'

print(jstext['words_result'][0]['words'])

last_text=copy.copy(now_text)

except:

pass

cv2.imshow('image', frame)

k = cv2.waitKey(20)

# q键退出

if (k & 0xff == ord('q')):

break

cap.release()

cv2.destroyAllWindows()

with open('test.txt','w')as f:

f.write(text)

input('完成')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值