python-3.x - 在 Tkinter 标签内循环 OpenCV 图像 - 使用 esp32-cam
问题描述
这是一个循环理解问题,我是 Tkinter 新手,我不知道图像是如何更新的
°°°问题°°°
它是关于制作一个程序来捕获esp32-cam模块的图像,除了在Tkinter中显示图像以制作用户界面外,还可以将它们可视化并与urllib和Opencv库一起使用
图像正确更新,但如图所示向下滚动
我希望你能帮助我解决这个问题以及如何将它锚定在我想要的位置,使用函数 .place (x = 0, y = 0) 进出循环,但图像没有更新
°°°图像°°°
启动程序,图像在 Tkinter 窗口中居中,这很好。 第一次捕获
当图像在500毫秒刷新时,图像“无限”向下滚动,如下图所示: 秒捕获
#Python v3.8.4
import tkinter as *
from PIL import Image, ImageTk
import cv2
import numpy as np
import urllib.request
url='http://192.168.0.24/picture'
delay = 1000
imgtk = [None]
def loopCapture():
imgResponse = urllib.request.urlopen (url)
imgNp =np.array(bytearray(imgResponse.read()),dtype=np.uint8)
image = cv2.imdecode (imgNp, -1)
b,g,r = cv2.split(image)
img = cv2.merge((r,g,b))
im = Image.fromarray(img)
imgtk[0] = ImageTk.PhotoImage(image = im)
capture = Label(root, image = imgtk[0]).pack()
root.after(delay, loopCapture)
root = Tk()
root.geometry("1200x700")
loopCapture()
root.mainloop()
解决方案
我只需要了解更多关于 tkinter 库的信息,但是如果有人遇到同样的问题,这里是代码:
from PIL import Image, ImageTk
import urllib.request
import tkinter as tk
import numpy as np
import cv2
# esp32-cam url
urlCam ='http://192.168.0.24/picture'
panel = None
root = None
def loopCamera():
imgResponse = urllib.request.urlopen (urlCam)
imgNp = np.array(bytearray(imgResponse.read()),dtype=np.uint8)
image = cv2.imdecode (imgNp, -1)
b,g,r = cv2.split(image)
img = cv2.merge((r,g,b))
im = Image.fromarray(img)
imgtk = ImageTk.PhotoImage(image = im)
panel.configure(image = imgtk)
panel.image = imgtk
panel.after(5, loopCamera)
root = tk.Tk()
root.title('car-vision')
root.geometry('1000x600')
panel = tk.Label(root)
panel.pack()
loopCamera()
root.mainloop()
推荐阅读
- java - 尝试设置 Spring Boot Rest 测试时出现 sun.reflect.annotation.TypeNotPresentExceptionProxy 异常
- ios - 如果 UISearchDisplayController 已弃用,带有搜索显示控制器的搜索栏有什么好处?
- python-3.x - 如何按键值对 Python 字典进行排序
- c# - 身份验证 Azure AD 后将用户返回到请求的 URL
- java - 带数组的随机问题
- spring-cloud - spring cloud config propertySources“名称”已更改
- c - hdb参数定义头文件与.h文件的区别
- gmail - 删除旧帐户后,为我的 google 帐户创建一个新的 gmail 帐户
- android - 如何解决 Android 上的“Lcom/sun/mail/util/MailLogger 解析失败”?
- objective-c - 从 Objective C 中的 React Native 包中读取文件