不一致的图片图片()表演

2024-05-20 11:00:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将numpy数组(加载了OpenCV的网络摄像机镜头)转换成Tkinter PhotoImage对象,以在Tkinter GUI上显示它们。{{800>在cdms>帧中经历严重的速率下降。以下是片段:

ar = Image.fromarray(frame)
itk = ImageTk.PhotoImage(ar) # *
lbl = Label()
lbl.configure(image=itk)
lbl.image = itk

我测量了用*标记的行的执行时间:

^{pr2}$

另外,下面是表演的情节: ImageTk.PhotoImage() performance

图像的像素计数总是相同的,我无法生成性能始终较低的条件。在

有什么办法防止尖峰?如果可以预测,跳过帧也不是问题。在

PIL版本4.0.0 OpenCV 3.0.0版 Numpy 1.12.0版 Python版本:2.7.12


Tags: 对象image版本网络numpytkintergui数组
1条回答
网友
1楼 · 发布于 2024-05-20 11:00:16

虽然我没有找到原因或解决办法,但我找到了一个解决办法,让我有一个合理的性能,而不是不断冻结。此解决方案包括两部分:

1)每个捕获的帧都像以前一样转换成ImageTk.PhotoImage对象。但是,我也测量了这个操作的持续时间。如果花费的时间超过100毫秒,则该帧不会在GUI中更新。在

2)当捕捉到帧时,会启动一个新线程来更新GUI图像。这使得新捕获的帧即使在面临有问题的长延迟时也能被更新。这些延迟的图像将不会显示在GUI上,导致一些丢失的帧,这些帧将被下一帧快速替换。这是因为大多数情况下转换非常快。在

相关问题 更多 >