IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Python软件设计基础 第八节-Tesseract-Ocr视频字幕提取 -> 正文阅读

[人工智能]Python软件设计基础 第八节-Tesseract-Ocr视频字幕提取

目录

一、Tesseract-Ocr概述与环境配置

(一)Tesseract-Ocr介绍

(二)Tesseract-Ocr安装

1、程序下载及安装

2、配置环境变量

3、语言配置与程序测试

二、视频字幕提取实现

(一)实现原理

(二)代码实现

三、总结


一、Tesseract-Ocr概述与环境配置

(一)Tesseract-Ocr介绍

Tesseract是一款由HP实验室开发、由Google维护的开源OCR(Optical Character Recognition , 光学字符识别)引? ?擎。Tesseract可以处理很多自然语言,如英语、葡萄牙语等。截止到2015年为止,它可以支持超过100种书面语言,并且可以通过训练学习轻松掌握其他语言。

(二)Tesseract-Ocr安装

1、程序下载及安装

官方网站:https://github.com/tesseract-ocr/tesseract
官方文档:https://github.com/tesseract-ocr/tessdoc
语言包地址:https://github.com/tesseract-ocr/tessdata
下载地址:https://digi.bib.uni-mannheim.de/tesseract/

进入下载页面后,下载正式稳定版本,文件名为“tesseract-ocr-w64-setup-v5.0.0.20190623.exe”。

下载完成后,在PC上进行安装。安装时要注意路径中不要有中文,避免出现问题。

安装过程可以选择要安装的语言包,如简体中文。但速度较慢,建议通过其他途径下载语言包,并在本地进行安装。

2、配置环境变量

在电脑上按“Win+R”打开命令行,输入“sysdm.cpl”打开设置Path的窗口。

?依次选择“高级”-“环境变量”。

?在path变量中添加tesseract-ocr的安装路径。

3、语言配置与程序测试

把语言文件“chi_sim.traineddata”拷贝tesseract-ocr安装目录下的tessdata文件夹中,使程序语言显示为中文。并在tesseract-ocr安装目录下打开命令窗口,输入“tesseract -v”命令,对tesseract-ocr的安装进行检测。

出现下图提示,安装配置完成。

二、视频字幕提取实现

(一)实现原理

1、读取视频,并获取视频尺寸,便于查找字幕位置

2、截取字幕所在的区域,存为变量

3、将字幕区域转化为灰度图

4、利用cv2对字幕区域沿X轴方向边缘特征矩阵二值化

5、利用tesseract-ocr中的文字识别模块对处理后的字幕区域进行识别

6、输出识别后的字幕文字

(二)代码实现

选取《让子弹飞》的片段进行识别,并输出字幕信息。

以下为视频画面:

实现代码如下:

import pytesseract
import cv2
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
#导入第三方库

if __name__ == '__main__':
    path = "让子弹飞.mp4"
    #定义读取的视频路径

    cap = cv2.VideoCapture(path)
    frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
    print(frame_count)
    #计算视频的帧数
    
    i=0
    #定义初始的帧数
    while i<frame_count:
        cap.set(cv2.CAP_PROP_POS_FRAMES, i)
        _, frame = cap.read(i)

        shape = frame.shape
        print(shape)
        #输出待处理视频的尺寸信息

        img=frame[635:715, 100:1200]
        #调整截图的尺寸
        plt.imshow(img)
        plt.axis("off")
        plt.show()
        #显示截取后的图片
        
        img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        #将截取的图片转为灰度图
        #cv2.imshow("Frame-2:Gray", img)
        #显示灰度图
        _, img= cv2.threshold(img, 220, 255, cv2.THRESH_BINARY)
        # 图像,阈值,映射的最大值,使用算法一般为cv2.thresh_binary
        #cv2.imshow("Frame-3:Binary", img)
        #显示灰度图
        
        tessdata_dir_config = '--tessdata-dir "D:\\Python lib\\Tesseract-OCR\\tessdata"  --psm 7 -c preserve_interword_spaces=1'
        #选取用于文字识别的模块
        word = pytesseract.image_to_string(img,
                                           lang='chi_sim',
                                           #config=' --psm 7 -c preserve_interword_spaces=1')
                                           config=tessdata_dir_config)
        print(word)
        #输出识别后文字
        i=i+24*5
        #对待识别帧数进行定义,每120帧识别一次

        if cv2.waitKey(10) & 0xff == ord("q"):
            break
        #设置停止程序的操作

    cap.release()
    cv2.destroyAllWindows()

输出结果如下:

?文字识别的效果和准确度还是不错的。

三、总结

在使用上述代码进行字幕识别时,需要不断调整截取字幕的位置。由于不同视频的字幕位置不同、画面比例不同,因此识别不同的视频需要使用不同的参数。

经过多次比较,发现当字幕位于截图中心时,识别效果最好。且字幕与画面不重叠的情况下,识别效果最好。

?

其次就是要根据不同的字幕类型,采取不同的画面处理方法。例如,有的字幕本身比较淡,不是纯白色的,这时再进行边缘二值化就容易导致字幕不完全,最终识别的效果欠佳。

解决思路:在进行最终识别前,先将灰度化、二值化的字幕截图输出,看看两者的效果,再去选择合适的处理方法。例如,下方二图,上面为灰度化处理的图片,下面为二值化处理的图片。经过二值化处理的图片明显存在缺失,不容易识别,因此可以不选二值化,仅选择灰度化即可。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-01 17:42:25  更:2021-12-01 17:45:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 2:44:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码