调用摄像头(基于OpenCV)
本文将演示如何在Tkinter中显示摄像头视频帧。
第一步:安装依赖库
pip install opencv-python pillow
第二步:导入依赖库
from tkinter import *
from PIL import Image, ImageTk
import cv2
第三步:定义GUI
win = Tk()
win.geometry("640x480")
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)
imgtk = ImageTk.PhotoImage(image = img)
label.imgtk = imgtk
label.configure(image=imgtk)
label.after(20, show_frames)
在show_frames 函数中,调用opencv的cvtColor 函数,将摄像头的格式转换为RGB格式,然后通过Image.fromarray 函数,将opencv的图像格式转换Image格式,最后转换成PhotoImage 。
第六步:显示视频
show_frames()
win.mainloop()
完整代码如下:
from tkinter import *
from PIL import Image, ImageTk
import cv2
win = Tk()
win.geometry("640x480")
label = Label(win)
label.grid(row=0, column=0)
def show_frames():
cv2image= cv2.cvtColor(cap.read()[1],cv2.COLOR_BGR2RGB)
img = Image.fromarray(cv2image)
imgtk = ImageTk.PhotoImage(image = img)
label.imgtk = imgtk
label.configure(image=imgtk)
label.after(20, show_frames)
show_frames()
win.mainloop()
|