栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

第八节课·字幕识别+前几课梳理

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第八节课·字幕识别+前几课梳理

8.1 识别字幕

1.安装包

①安装tesseract-ocr。

②设置执行文件的路径。

Win+R-输入sysdm.cpl-高级-环境变量-打开path-编辑(tesseract-ocr的路径)

安装参考:Tesseract OCR V5.0安装教程(Windows) - 简书

③把语言文件拷贝到tessdata目录下: 

 

2.jupyter notebook中编写字幕识别的代码

if __name__ == '__main__':  __name__ 是当前模块名,当模块被直接运行时模块名为 __main__ 。意思就是,当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行。

注意:是两个下划线

代码如下:

import pytesseract
import cv2
import numpy as np
from scipy import stats
import os
import matplotlib.pyplot as plt
os.chdir(r'D:a learn sth大三上Python程序设计字幕识别')

if __name__ == '__main__':#这是两个下划线
    path = "dang.mp4"
    print(path)
    cap = cv2.VideoCapture(path)
    frame_count = int(cap.get(cv2.CAP_PROP_frame_COUNT))#看一共有多少帧
    print(frame_count)
    i=0
    while i 

3.将字幕识别的功能呈现到前端网页上

8.2 前几课内容梳理

Flask基本框架:

【作用】Flask能帮助我们运用python快速搭建一个网页

【案例梳理:网页中显示“视频分镜”】

1.Flask框架搭建:

①新建python文件,命名为main.py,其中框架如下:

From flask import Flask#导入flask包

app=Flask (__name__)

@app.route('/')
def index():
    return “hello world”

if __name__ == '__main__':
    app.run()

2.新建html文件

给tittle和body添加内容




    
    分镜


视频分镜

3.回到main.py中,在From flask import Flask后添加模块, render_template

Main中把return那行改成:return_template(‘index.html’)

打开网页即可看到“视频分镜”的字样。

From flask import Flask,render_template

app=Flask (__name__)

@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run()

4.新建文件夹static,将MP4文件放进去。

之后切帧生成的文件都放在static里。

注意:static里面放静态文件,template放网页

5.添加切帧代码

复制相应的代码到main.py中,通过def genframe()的方式

def genframe():#写一个函数,放之前的片段。函数如果放在下面可能找不到,那就往上挪一挪
    v_path='static/ghz.mp4'
    image_save='static/pic'

    if not(os.path.exists(image_save)):#如果没有这个文件
        os.mkdir(image_save)#就新建一个文件

    cap=cv2.VideoCapture(v_path)
    fc=cap.get(cv2.CAP_PROP_frame_COUNT)

    for i in range(int(fc)):#帧数变为整数
        _,img=cap.read()
        cv2.imwrite('static/pic/image{}.jpg'.format(i),img)

6.要将文件名传到网页中。

先用#genframe()将切帧的部分注释掉(便于从网页中查看是否传输成功)

@app.route('/')#根路由器,路由器用于分发
def index():#定义一个函数
    #return"hi,flask!"
    genframe()#运行上面的函数

    framecount = 249  # 根据文件中的帧数输入数字;这一行是指将这边的 帧数 传到html中
    #pic = 'static/pic/image0.jpg'
    pic = 'static/pic/image'
    return render_template('index.html',pic1=pic,framecount=framecount)#返回一个模板,将framecounthe和pic传过去

这里模块里的第一个framecount指的是html里面的变量framecount,而第二个framecount指的是函数index里面的变量framecount;即render_template的功能是对先引入index.html,同时根据后面传入的参数,对html进行修改渲染。

7.在html的python语句中添加循环(图片大小、来源等)

{{}}表示这是一个变量,可以根据用户在模块端给予的参数的不同,进行调整

参考网址:Flask 学着用模板 render_template_yy19890521的博客-CSDN博客_render_template

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/499155.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号