如何在 TkInter 窗口中显示网络摄像头?

tkinterpythongui-programming更新于 2025/6/19 10:52:17

Python 库是独立的,因此在构建特定功能的应用程序时,它们都可以用于不同的目的。在此示例中,我们将使用 OpenCV 和 Tkinter 库构建应用程序。OpenCV 是一个 Python 库,用于处理计算机视觉和其他人造工件。使用 OpenCV 模块,我们必须在 tkinter 窗口中显示网络摄像头。

要创建应用程序,您需要在本地计算机中安装 open-cv,并确保已预先安装 Python Pillow 包。您可以通过键入以下命令来安装这些包,

pip install open-cv
pip install Pillow

安装完成后,我们可以开始创建应用程序的结构和 GUI。我们的应用程序的基本功能是使用 OpenCV 打开网络摄像头(如果可能)。因此,为了显示每个捕获的帧,我们可以使用 Python Pillow (PIL) 包将帧转换为图像。现在,图像可用于标签小部件,该小部件会迭代显示窗口中捕获的每个帧。

示例

# 导入所需的库
from tkinter import *
from PIL import Image, ImageTk
import cv2


# 创建 TKinter 窗口或框架的实例
win = Tk()

# 设置窗口的大小
win.geometry("700x350")

# 创建标签以捕获视频帧
label =Label(win)
label.grid(row=0, column=0)
cap= cv2.VideoCapture(0)

# 定义函数以显示帧
def show_frames():
   # 获取最新帧并转换为图像
   cv2image= cv2.cvtColor(cap.read()[1],cv2.COLOR_BGR2RGB)
   img = Image.fromarray(cv2image)
   # 将图像转换为 PhotoImage
   imgtk = ImageTk.PhotoImage(image = img)
   label.imgtk = imgtk
   label.configure(image=imgtk)
   # 间隔一段时间后重复,以连续捕获
   label.after(20, show_frames)

show_frames()
win.mainloop()

输出

每当我们运行上述代码时,它都会打开网络摄像头,输出将显示在 tkinter 窗口中。


相关文章


有用资源