#python 自动识别视频字幕

环境设置:
1、安装pip3 install pytesseract
2、安装tessract-OCR(将安装路径添加至环境路径,此处我安装在D:\Tesseract-OCR中)

导入pytesseract包时注意,修改D:\Python 32\Lib\site-packages\pytesseract中【pytesseract.py】文件中的代码修改至OCR的所在路径:
tesseract_cmd = 'D:\Tesseract-OCR\tesseract.exe’

import pytesseract
import cv2
import numpy as np
from scipy import stats
import os
import matplotlib.pyplot as plt
os.chdir('d:\\image')

读取视频的各个帧,将有字幕的图片片段提取出来,并以灰度图显示。

if __name__ == '__main__':
    path = "a.mp4"
    print(path)
    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)
        if i==48:
            cv2.imwrite('20210701.jpg',frame)
            
        shape = frame.shape
        #调整字幕显示的区间
        img=frame[550:600, 0:1070]
        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)            #显示灰度图

用Tesseract-OCR对截取出的字幕图片进行分析,按每秒24帧计算,间隔2.5秒截取一次,提取字幕。

        #tessdata_dir_config = '--tessdata-dir "D:\\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.5

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

结果显示:
#python 自动识别视频字幕_第1张图片

你可能感兴趣的:(python,音视频,opencv)