#python 自动识别视频字幕

该博客介绍了如何配置和使用Tesseract-OCR从视频中提取字幕。通过读取视频帧,选取特定区域,转换为灰度图并应用二值化处理,然后利用Tesseract进行文字识别。主要关注的是图像处理和OCR技术在视频字幕提取中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境设置:
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()

结果显示:
请添加图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值