这个问题经常被问到,但我的情况不同。
我正在开发一个应用程序,它截取一些视频的屏幕截图,执行OCR处理,并在列表视图中向用户显示字幕。
我使用tkinter
来显示listview
中的文字。每当我运行我的代码时,我都会得到Attributeerror :type object image has no attribute open
。
在列表视图中显示它是否正确?
还有其他办法吗?
提前谢谢。
import sys
import PIL.Image
sys.modules['Image'] = PIL.Image
import Image
import cv2
import pytesseract
import matplotlib.pyplot as plt
import numpy as np
import subprocess
import os
import re
import webbrowser
import requests
#import pyscreenshot as ImageGrab
from PIL import ImageGrab
import threading
from tkinter import *
import tkinter
import lxml
from lxml import etree
a=""
root = Tk()
Lb1 = Listbox(root)
def printit():
a=""
im=ImageGrab.grab()
image=np.array(im)
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
crop_position = int(image.shape[0]/4)
subtitle_img = image[image.shape[0] - crop_position:,:]
rthresh,thresh = cv2.threshold(subtitle_img, 100,255, cv2.THRESH_BINARY)
inverted = cv2.bitwise_not(thresh)
imageFileName = "textImages.png"
cv2.imwrite(imageFileName,inverted)
curText = pytesseract.image_to_string(Image.open(imageFileName))
os.remove(imageFileName)
return curText
def update_status():
# Get the current message
res=printit()
Lb1.insert(res)
# After 1 second, update the status
root.after(1000, update_status)
root.after(1, update_status)
root.mainloop()