在 tkinter 中调整图像大小
resizing an image in tkinter
以下代码在 tkinter window 上播放给定的视频文件:
from tkinter import *
from PIL import ImageTk, Image
import cv2
root = Tk()
main_label = Label(root)
main_label.grid()
# Capture from camera
cap = cv2.VideoCapture("video.mp4")
# function for video streaming
def video_stream():
ret, frame = cap.read()
cv2image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
img = Image.fromarray(cv2image)
tk_img = ImageTk.PhotoImage(image=img)
main_label.configure(image=tk_img)
main_label.tk_img = tk_img
main_label.after(20, video_stream)
video_stream()
root.mainloop()
我的问题是如何调整要以 500 x 500 分辨率播放的视频?
首先提一个可能的问题
经常检查是否frame
returns。否则您的应用程序将崩溃。
ret, frame = cap.read()
if ret:
cv2image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
现在resize
你的框架
# function for video streaming
ret, frame = cap.read()
if ret:
cv2image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
cv2image = cv2.resize(cv2image, (500, 500))
正确代码:
from tkinter import *
from PIL import ImageTk, Image
import cv2
root = Tk()
main_label = Label(root)
main_label.grid()
# Capture from camera
cap = cv2.VideoCapture("video.mp4")
# function for video streaming
def video_stream():
ret, frame = cap.read()
if ret:
cv2image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
cv2image = cv2.resize(cv2image, (500, 500))
img = Image.fromarray(cv2image)
tk_img = ImageTk.PhotoImage(image=img)
main_label.configure(image=tk_img)
main_label.tk_img = tk_img
main_label.after(20, video_stream)
video_stream()
root.mainloop()
以下代码在 tkinter window 上播放给定的视频文件:
from tkinter import *
from PIL import ImageTk, Image
import cv2
root = Tk()
main_label = Label(root)
main_label.grid()
# Capture from camera
cap = cv2.VideoCapture("video.mp4")
# function for video streaming
def video_stream():
ret, frame = cap.read()
cv2image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
img = Image.fromarray(cv2image)
tk_img = ImageTk.PhotoImage(image=img)
main_label.configure(image=tk_img)
main_label.tk_img = tk_img
main_label.after(20, video_stream)
video_stream()
root.mainloop()
我的问题是如何调整要以 500 x 500 分辨率播放的视频?
首先提一个可能的问题
经常检查是否frame
returns。否则您的应用程序将崩溃。
ret, frame = cap.read()
if ret:
cv2image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
现在resize
你的框架
# function for video streaming
ret, frame = cap.read()
if ret:
cv2image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
cv2image = cv2.resize(cv2image, (500, 500))
正确代码:
from tkinter import *
from PIL import ImageTk, Image
import cv2
root = Tk()
main_label = Label(root)
main_label.grid()
# Capture from camera
cap = cv2.VideoCapture("video.mp4")
# function for video streaming
def video_stream():
ret, frame = cap.read()
if ret:
cv2image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
cv2image = cv2.resize(cv2image, (500, 500))
img = Image.fromarray(cv2image)
tk_img = ImageTk.PhotoImage(image=img)
main_label.configure(image=tk_img)
main_label.tk_img = tk_img
main_label.after(20, video_stream)
video_stream()
root.mainloop()