import cv2 import tkinter as tk from tkinter import * from PIL import Image, ImageTk#图像控件 from Layout_Settings.one import top1 class Two_Layout(): def __init__(self, top): self.top = top self.cap = cv2.VideoCapture(0) self.canvas2 = Canvas(self.top, bg='LightSkyBlue', width=1100, height=650, highlightthickness=2, highlightbackground='Black') self.canvas2.place(x=0, y=20) self.windows_display() def Camera(self): ref, frame = self.cap.read() if ref is True: frame = cv2.flip(frame, 1) # 摄像头翻转 cvimage = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA) pilImage = Image.fromarray(cvimage) pilImage = pilImage.resize((1100, 650), Image.ANTIALIAS) tkImage = ImageTk.PhotoImage(image=pilImage) return tkImage if ref is False: return False def windows_display(self): ref, frame = self.cap.read() if ref is False: label = tk.Label(self.canvas2, text='未接入摄像头!', font=("黑体", 25), width=15, height=1).place(x=400, y=300, anchor='nw') cap = cv2.VideoCapture(0) elif ref is not False: self.photo = ImageTk.PhotoImage(image=Image.fromarray(frame)) self.canvas2.create_image(0, 0, image=self.photo, anchor=tk.NW) self.top.after(15, self.windows_display()) top = tk.Tk() Two_Layout(top)
时间: 2023-06-15 12:03:09 浏览: 146
利用cv2调用摄像头并捕捉图像,文件读写操作,os路径建立/删除,带tk界面源码库
这是一个基于 tkinter 和 OpenCV 的摄像头界面程序,其中主要包含一个名为 Two_Layout 的类,该类实现了图形界面的布局和摄像头的显示。具体来说,该类中包含了以下方法:
- `__init__(self, top)`:构造函数,初始化界面和摄像头对象;
- `Camera(self)`:获取摄像头捕获的图像,将其转换为 tkinter 控件中可用的格式;
- `windows_display(self)`:在 tkinter 窗口中显示摄像头捕获的图像。
在程序运行时,会创建一个 tkinter 窗口,并在其中显示摄像头捕获的图像。如果未能成功接入摄像头,则会在界面中显示“未接入摄像头!”的提示信息。
阅读全文