【问题标题】:resizing an image in tkinter在 tkinter 中调整图像大小
【发布时间】:2021-04-21 06:30:44
【问题描述】:

以下代码在 tkinter 窗口上播放给定的视频文件:

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 的分辨率播放?

【问题讨论】:

  • 检查thisthis
  • 你有没有在ret, frame = cap.read()这句话之后尝试cv2image = cv2.resize(cv2image, (500, 500))
  • 非常感谢你们! @Ahx 这正是我所需要的!谢谢!!

标签: python opencv tkinter python-imaging-library


【解决方案1】:

首先我想提一个可能的问题。

始终检查frame 是否返回。否则你的应用会崩溃。

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()

【讨论】:

    猜你喜欢
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多