- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在将 numpy 数组(使用 OpenCV 加载的网络摄像头素材)转换为 Tkinter PhotoImage 对象以在 Tkinter GUI 上显示它们。但是,函数 PIL.ImageTk.PhotoImage()
经历了大约 800 毫秒的峰值,导致帧速率严重下降。这是片段:
ar = Image.fromarray(frame)
itk = ImageTk.PhotoImage(ar) # *
lbl = Label()
lbl.configure(image=itk)
lbl.image = itk
我测量了标有*
的行的执行时间:
Number of runs: 72
Total duration: 11.97 seconds
Longest run: 967.05 milliseconds
Shortest run: 1.03 milliseconds
Average run: 166.25 milliseconds
Median run: 1.2 milliseconds
Standard deviation: 315.63 milliseconds
图像的像素数始终相同,我无法生成性能持续较低的条件。
关于如何防止尖峰的任何想法?如果可以预测,跳帧不是问题。
PIL 版本 4.0.0OpenCV 版本 3.0.0Numpy 版本 1.12.0Python版本:2.7.12
最佳答案
虽然我没有找出原因或解决此问题,但我找到了一种解决方法,可以让我在不经常卡住的情况下获得合理的性能。该解决方案分为两部分:
1) 每个捕获的帧都像以前一样转换为 ImageTk.PhotoImage
对象。然而,我也测量了这个操作的持续时间。如果花费的时间超过 100 毫秒,则框架未在 GUI 中更新。
2) 捕获帧时,将启动一个新线程来更新 GUI 图像。这允许更新新捕获的帧,即使遇到有问题的长延迟也是如此。这些延迟的图像不会在 GUI 上显示,从而导致一些丢失的帧,这些帧将很快被下一帧替换。这是可行的,因为大多数时候转换速度非常快。
关于python - PIL.ImageTk.PhotoImage() 性能不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42737699/
我对 tkinter 很陌生,我注意到当我尝试将图片作为背景添加到窗口时,它不会显示。这是代码。 from tkinter import * root = Tk() def cheese():
我有两段代码,它们都应该创建包含黑色方 block 的 test.png。第一个这样做,但第二个返回一个透明的正方形。它们的区别在于第一个左边有明显的条纹,第二个没有。 第一个例子: root = T
发现问题 今天在使用imagetk.photoimage()显示图片时,当把包含该函数放在自定义函数里时,不能正常显示,移到函数为又可正常显示,所以想到可能是变量不是全局性的缘故,改为全局变量后果
我正在尝试在我的文本小部件中显示两个图像对象。最初,这两个物体都显示为空图像。经过一番研究,我了解到我需要保留对图像的引用。我在代码中添加了一行额外的代码。我现在看到第二张图像正确显示,但第一张图像仍
from tkinter import * root = Tk() photo = PhotoImage(file='blueface.png') label = Label(root, image=
目标是将以下代码减少到尽可能少的代码行(和尽可能少的字符)。它不需要是“可读的”甚至是“pythonic”的,只要简短而甜美即可。这些更多是为了好玩。 self.BlueEgg = PhotoImag
在我正在创建的简单游戏中,我目前将占位符矩形对象作为图形。我正在尝试用 Sprite 替换它们,但据我了解,Tkinter 不支持 PNG 或 alpha 透明度。我正在使用 Python 3.3,它
我有一个 Python 3 Tkinter 程序,该程序应该从特殊文件格式渲染图像。 from tkinter import * image = [] path = Tk() display = To
我正在尝试使用 tkinter,但这段代码不起作用,我想知道是否有人知道为什么,谢谢。 from tkinter import * window = Tk() window.title("tkinte
我一直在尝试使用 PIL 调整图像大小,然后使用 Tkinter 显示它们,但程序一直在崩溃,我已将问题隔离到下面的第二行: image = Image.open("0.gif") photo = I
我正在尝试在 Mac 10.6.8 上运行以下命令: Python 2.7.2 |EPD 7.1-2 (64-bit)| (default, Jul 27 2011, 14:50:45) [GCC 4
我需要调整图像大小,但我想避免 PIL,因为我不能让它在 OS X 下工作 - 不要问我为什么...... 无论如何,因为我对 gif/pgm/ppm 很满意,所以 PhotoImage 类对我来说没
我正在尝试显示视频,并且使用示例/解决方案来解决如何在 Tkinter 上播放视频的问题似乎并不能提供流畅和快速的渲染。 例如: frame = self.vid_cap.read() frame =
此代码有效: img = PhotoImage(file="Image.gif") Label(root, image=img).pack() 这个方法怎么行不通? Label(root, image
这个问题在这里已经有了答案: Why does Tkinter image not show up if created in a function? (5 个答案) 关闭 4 年前。 我正在尝试在
我正在将 numpy 数组(使用 OpenCV 加载的网络摄像头素材)转换为 Tkinter PhotoImage 对象以在 Tkinter GUI 上显示它们。但是,函数 PIL.ImageTk.P
当操作 PhotoImage 对象时: import tkinter as tk img = tk.PhotoImage(file="myFile.gif") for x in range(0,100
所以我在 macbook pro 上运行 python 2.6 并尝试用 python 编写代码以在 tkinter gui 上的标签中显示文件中的图像。该图像称为 image.png。当我使用这段代
我收到错误'PhotoImage instance has no attribute 'resize'',尽管有多个在线资源表明这是使用 PIL 调整图像大小的方法。有什么想法吗? 相关代码: Dea
我正在研究 Yolo3-4-PY 以使用 tkinter 实现它。 我到处查找,但无法解决问题。 当我运行程序时,会显示 Canvas ,但是当我单击“开始视频”( btton ) 时,出现以下错误:
我是一名优秀的程序员,十分优秀!