擅长:python、mysql、java
<p>我试图在openCV中读取帧,并在tkinter标签中显示它们。我可以使用以下代码执行此操作:</p>
<pre><code>import tkinter as tk
import cv2
from PIL import ImageTk, Image
video_path = "SAMPLE/STORED_VIDEO/PATH"
root = tk.Tk()
base_img = Image.open("PATH/TO/DEFAULT/LABLE/IMAGE")
img_obj = ImageTk.PhotoImage(base_img)
lblVideo = tk.Label(root, image=img_obj)
lblVideo.pack()
cap = cv2.VideoCapture(video_path)
if cap.isOpened():
def show_frame():
_, frame = cap.read()
im = Image.fromarray(frame)
img = ImageTk.PhotoImage(im)
lblVideo.configure(image=img)
lblVideo.image = img
lblVideo.after(1, show_frame) # Need to create callback here
show_frame()
root.mainloop()
</code></pre>
<p>虽然它不包含with语句,但您可以尝试替换<code>show_frame</code>函数本身内部的<code>after()</code>回调</p>