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

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

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)

#定义show_frames()函数以显示帧
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)
   #重复调用show_frames()函数以连续捕获帧
   label.after(20, show_frames)

show_frames()
win.mainloop()

输出

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

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程