问题:
我试图通过循环浏览保存在目录中的一系列静止图像来模拟实况视频,但是当我添加动画和更新功能时,我的图显示为空白。 < / p>
执行此操作的背景:
我认为以这种方式而不是完全改变方法对我来说很重要,例如先将图像转换为视频然后再显示,因为我真正要测试的是图像分析,我将添加然后叠加在每一帧上。最终的应用程序将是从摄像机一个接一个地接收帧,并且需要进行一些处理,显示图像+注释+将数据输出为.csv等...我现在正在对此进行仿真,因为我没有任何图像硬件来生成图像,并且几个月内将无法使用它,因此我需要进行图像处理设置,但是我确实可以访问一些将要制作的静止图像。如果我的模拟图像为1680x1220且图像质量为1.88 Mb TIFF,尽管我可以根据需要进行隐蔽和压缩,但最终的分辨率会更高一些,并且可能需要调整图像格式。>
我尝试过的事情:
我很感激别人没有我的图像,但是这些图像并不特殊。我正在使用60张图像,但我猜可以用任意2张随机图像并将range(60)设置为range(2)来进行测试?
我复制的示例最初是通过创建随机数组来演示动画功能的,如果执行此操作,它将显示一个绘图,该绘图将按预期以随机正方形进行更新。 替换:
A = np.random.randn(10,10)
im.set_array(A)
...用我的图像代替...
im = cv2.imread(files[i],0)
...,并且情节保持空白/空白。我得到一个显示为“ Figure1”的窗口(就像使用随机数组时一样),但是与数组不同,此窗口中没有任何内容。
完整代码:
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和编程新手,因此只能依靠调整其他人在网上提供的示例,但是我对它们的工作方式仅是一种简单的理解,最终在语法上遇到了很多试验和错误。我只是想不出任何办法使这一项工作。
为任何帮助加油!
答案 0 :(得分:1)
什么都不显示的主要原因是因为您从未将图像添加到绘图中。我在下面提供了一些代码来完成您想做的事情,请确保查找您好奇或不理解的内容!
for