0
点赞
收藏
分享

微信扫一扫

Python视频处理(3)——提取视频字幕

吓死我了_1799 2022-01-13 阅读 56

目录

一、安装tesseract-ocr

1、下载安装

2、设置环境变量:

​ ​ 3、测试安装是否成功

 二、视频字幕识提取

1、基本步骤:

2、完整代码:

3、部分运行结果:


一、安装tesseract-ocr

1、下载安装

下载地址:Index of /tesseract

下载最新稳定版本:tesseract-ocr-w64-setup-v5.0.0.20190623.exe

2、设置环境变量:

Win+R打开命令行,输入sysdm.cpl打开设置Path的窗口,添加tesseract-ocr的路径

  3、测试安装是否成功

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

tesseract –v 测试安装

tesseract –list-langs测试语言包

 

 

 

 二、视频字幕识提取

1、基本步骤:

(1)逐帧截取字幕部分图像范围

(2)cv2.cvtColor图像灰度化

(3)cv2.threshold二值化

(4)安装pytesseract:pip3 install pytesseract

pytesseract将图像上的Tesseract OCR运行结果返回到字符串

2、完整代码:

import pytesseract
import cv2
import numpy as np
from scipy import stats
import os
import matplotlib.pyplot as plt

if __name__ == '__main__':
    path = "20210701.mp4"
    print(path)
    cap = cv2.VideoCapture(path)
    frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
    print(frame_count)
    i=0
    #print("1")
    while i<frame_count:
        cap.set(cv2.CAP_PROP_POS_FRAMES, i)
        #print("2")
        _, frame = cap.read(i)
        #print("3")
        if i==48:
            cv2.imwrite('20210701.jpg',frame)
            #print("4")
        shape = frame.shape
        #print("5")
        print(shape)
        cv2.imshow("Frame-1", frame[580:630, 10:1270])
        #print("6")
        img=frame[630:680, 50:1270]
        plt.imshow(img)
        plt.axis("off")
        plt.show()
        #cv2.imshow(img)
        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 "C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\Lib\\site-packages\\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*2

        if cv2.waitKey(10) & 0xff == ord("q"):
            break

    cap.release()
    cv2.destroyAllWindows()

3、部分运行结果:

 

举报

相关推荐

0 条评论