- 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/
我在 Ubuntu 18.04 上使用 Pycharm 2018.2.4 社区版,我已经启动了 python 2.7 项目并使用 IDE 设置 -> 项目解释器我已经安装了 Pillow 但每当我尝试
我正在使用 Tkinter,我正在尝试将图像放入它制作的窗口中,但是无论我在互联网上搜索什么,我都发现我需要一个名为 ImageTk 的模块。我已经尝试安装此模块但它不起作用,我已经安装了 PIL 和
我有一个 GUI 正在运行,ImageTK 已经被使用了 3 次,但是每次我使用它添加新行时,该行都会给出 NameError : NameError: name 'ImageTK' is not d
当我使用 PIL.ImageTk 库将 png 加载到 GUI 并使用日志记录来记录某些事件时,它会在 Debug模式下创建一些不需要的日志。 我尝试将日志记录的级别更改为INFO或WARNING(或
我一直在尝试使用 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
我正在尝试显示视频,并且使用示例/解决方案来解决如何在 Tkinter 上播放视频的问题似乎并不能提供流畅和快速的渲染。 例如: frame = self.vid_cap.read() frame =
我正在尝试将图像放入带有 ImageTk 的窗口中和 PhotoImage .下面是代码: import tkinter as tk import random as r from PIL impor
我要导入ee.mapclient 但是当我这样做时,会返回以下错误: Traceback (most recent call last): File "", line 1, in imp
为什么这会起作用: ... from PIL import Image, ImageTk .... img = ImageTk.PhotoImage(Image.open("One.jpg")) ..
我在Ubuntu 18.04上使用Pycharm 2018.2.4社区版,并且已经启动python 2.7项目并使用IDE设置-> Project Interpreter我已经安装了Pillow,但是
我似乎无法弄清楚如何解决我的代码中有关从 PIL import ImageTK 的问题。我已经搜索并下载了 Pillow 不同的方式,代码的错误仍然是一样的。 Traceback (most rece
我正在将 numpy 数组(使用 OpenCV 加载的网络摄像头素材)转换为 Tkinter PhotoImage 对象以在 Tkinter GUI 上显示它们。但是,函数 PIL.ImageTk.P
所以我在 macbook pro 上运行 python 2.6 并尝试用 python 编写代码以在 tkinter gui 上的标签中显示文件中的图像。该图像称为 image.png。当我使用这段代
我是一个 python 新手,一直在制作一个有点奇怪的幻灯片脚本,它循环显示图像,还从另一个文件中获取变量以“解决”图像。 我确定我的代码是悲剧性的。但它确实有效(见下文)! 我的问题是 - 我如何让
我正在尝试从与我的 python 脚本所在的文件夹相同的文件夹中加载图像。 # create a class called Person # create init method # 2 attrib
我想将 PIL.ImageTk.PhotoImage 保存到文件中。我的方法是创建一个“打开”文件并调用“写入”方法,但它不起作用,因为我不知道如何从对象获取字节数组。 def store_temp_
我正在尝试使用 pyinstaller 来构建我一直在开发的程序,但之后我遇到了二进制文件的问题。这是我的程序。 首先我运行 pyinstall test.py 然后我使用 ./dist/main/t
我想将 PIL.ImageTk.PhotoImage 保存到文件中。我的方法是创建一个“打开”文件并调用“写入”方法,但它不起作用,因为我不知道如何从对象获取字节数组。 def store_temp_
我正在尝试使用 pyinstaller 来构建我一直在开发的程序,但之后我遇到了二进制文件的问题。这是我的程序。 首先我运行 pyinstall test.py 然后我使用 ./dist/main/t
我是一名优秀的程序员,十分优秀!