动画期间图像未在python绘图中更新

时间:2019-12-05 10:00:57

标签: python

问题:

我试图通过循环浏览保存在目录中的一系列静止图像来模拟实况视频,但是当我添加动画和更新功能时,我的图显示为空白。 < / p>

执行此操作的背景:

我认为以这种方式而不是完全改变方法对我来说很重要,例如先将图像转换为视频然后再显示,因为我真正要测试的是图像分析,我将添加然后叠加在每一帧上。最终的应用程序将是从摄像机一个接一个地接收帧,并且需要进行一些处理,显示图像+注释+将数据输出为.csv等...我现在正在对此进行仿真,因为我没有任何图像硬件来生成图像,并且几个月内将无法使用它,因此我需要进行图像处理设置,但是我确实可以访问一些将要制作的静止图像。如果我的模拟图像为1680x1220且图像质量为1.88 Mb TIFF,尽管我可以根据需要进行隐蔽和压缩,但最终的分辨率会更高一些,并且可能需要调整图像格式。

我尝试过的事情:

  • 我按照一个示例列出了文件夹中的所有文件,并给出了一个示例 更新情节。但是,当我运行 代码。
  • 我添加了一行来打印当前文件名,我可以看到 像预期的那样骑车。
  • 如果我刚刚创建的图像,我还确保图像将显示在绘图中 绘制一个图并添加一张图像,然后它们就可以了。但是,当与 动画功能,情节是空白的,我不确定自己做了什么 错误/未能包含。
  • 我还尝试在更新中添加一个plt.pause(),但是再次 没用。
  • 我将时间间隔增加到2000,以给它更多的时间,但这没用。我相信2000年是极端,我希望它应该能以20-30fps的速度工作。达到0.5fps可以告诉我代码是错误的还是不完整的,而不仅仅是一个需要花费时间来读取图像文件的问题。

我很感激别人没有我的图像,但是这些图像并不特殊。我正在使用60张图像,但我猜可以用任意2张随机图像并将range(60)设置为range(2)来进行测试?

我复制的示例最初是通过创建随机数组来演示动画功能的,如果执行此操作,它将显示一个绘图,该绘图将按预期以随机正方形进行更新。 替换:

A = np.random.randn(10,10)
im.set_array(A)

...用我的图像代替...

im = cv2.imread(files[i],0)

...,并且情节保持空白/空白。我得到一个显示为“ Figure1”的窗口(就像使用随机数组时一样),但是与数组不同,此窗口中没有任何内容。

Plot is blank

完整代码:

import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import os
import cv2

def update(i):
    im = cv2.imread(files[i],0) 
    print(files[i])
    #plt.pause(0.1)
    return im

path = 'C:\\Test Images\\'

files = []
# r=root, d=directories, f = files
for r, d, f in os.walk(path):
    for file in f:
        if '.TIFF' in file:
            files.append(os.path.join(r, file))

ani = FuncAnimation(plt.gcf(), update, frames=range(60), interval=50, blit=False)
plt.show()

我是python和编程新手,因此只能依靠调整其他人在网上提供的示例,但是我对它们的工作方式仅是一种简单的理解,最终在语法上遇到了很多试验和错误。我只是想不出任何办法使这一项工作。

为任何帮助加油!

1 个答案:

答案 0 :(得分:1)

什么都不显示的主要原因是因为您从未将图像添加到绘图中。我在下面提供了一些代码来完成您想做的事情,请确保查找您好奇或不理解的内容!

for