Python 无法在tkinter窗口之间移动网络摄像头视频
嗨,我只是想用tkinter模块在python GUI中使用网络摄像头保存视频帧 如何将视频向下移动或移动到GUI中的其他位置,以及如何减小视频显示屏幕大小 我试图将主功能中的Python 无法在tkinter窗口之间移动网络摄像头视频,python,opencv,tkinter,webcam,Python,Opencv,Tkinter,Webcam,嗨,我只是想用tkinter模块在python GUI中使用网络摄像头保存视频帧 如何将视频向下移动或移动到GUI中的其他位置,以及如何减小视频显示屏幕大小 我试图将主功能中的lmain=tk.Label(master=window)更改为 lmain=tk.Label(master=window).place(x=500,y=500) 如果我这样做,我会得到以下错误 [警告:0]全局C:\projects\opencv python\opencv\modules\videoio\src\cap
lmain=tk.Label(master=window)
更改为
lmain=tk.Label(master=window).place(x=500,y=500)
如果我这样做,我会得到以下错误
[警告:0]全局C:\projects\opencv python\opencv\modules\videoio\src\cap_msmf.cpp(674)
SourceReaderCB::~SourceReaderCB正在终止异步回调
无法复制此内容,请确保您发布的代码的行为与您声称的一样。读取代码将不起作用,因为
l2
是None
。如果flag
是None,则frame
可能不是您所期望的。但您的代码仍在继续处理它,这可能会导致问题。另外,如果isOpened()
返回false,则不应从网络摄像头读取帧。也许会有帮助。
#This Python program is developed in order to open an internal camera and display the image within Tkinter window.
#importing modules required
from ttk import *
import tkinter as tk
from tkinter import *
import cv2
from PIL import Image, ImageTk
import os
import numpy as np
global last_frame #creating global variable
last_frame = np.zeros((480, 640, 3), dtype=np.uint8)
global cap
cap = cv2.VideoCapture(0)
def show_vid(): #creating a function
if not cap.isOpened(): #checks for the opening of camera
print("cant open the camera")
flag, frame = cap.read()
frame = cv2.flip(frame, 1)
if flag is None:
print("Major error!")
elif flag:
global last_frame
last_frame = frame.copy()
pic = cv2.cvtColor(last_frame, cv2.COLOR_BGR2RGB) #we can change the display color of the frame gray,black&white here
img = Image.fromarray(pic)
imgtk = ImageTk.PhotoImage(image=img)
lmain.imgtk = imgtk
lmain.configure(image=imgtk)
lmain.after(10, show_vid)
if __name__ == '__main__':
window=tk.Tk() #assigning window variable for Tkinter as tk
lmain = tk.Label(master=window)
lmain.grid(column=0, rowspan=4, padx=5, pady=5)
window.title("Sign Language Processor") #you can give any title
window.geometry("1366x768")
show_vid()
window.mainloop() #keeps the application in an infinite loop so it works continuosly
cap.release()