【发布时间】:2021-07-22 14:13:57
【问题描述】:
我将图像以另一种格式存储在一个文件夹中。在一个单独的文件夹中,我有包含应该在图像上绘制的矩形坐标的文本文件。我使用read_file 函数从文件中读取 NumPy 数组。
从下面给出的脚本中,我可以成功地在图像上一个接一个地绘制坐标。但这只是一个接一个地生成图像,而我想要上述图像的视频,即由下面给出的脚本生成的图像。
执行上述操作的代码 sn-p:
for idx, val in enumerate(img_list):
image = read_file(img_list[idx])
with open(annot_list[idx], 'r') as f:
lines = [idx.rstrip('\n') for idx in f.readlines()]
annots = [list(map(int, idx.split(','))) for idx in lines]
plt.figure()
plt.imshow(image, cmap='gray')
for jdx, annot in enumerate(annots):
x1 = annots[jdx][0]
y1 = annots[jdx][1]
w = annots[jdx][2] - x1
h = annots[jdx][3] - y1
rect = patches.Rectangle((x1, y1), w, h, linewidth=3, edgecolor='r', facecolor='none')
plt.gca().add_patch(rect)
plt.show()
这里,img_list和annot_list变量包含图像文件的名称和各自注释文件的名称。
这会一个接一个地生成一组图像。如何生成这些帧的视频?我应该调整什么?我看过这个thread,但我似乎无法弄清楚我需要更改什么才能生成视频。我不一定要保存视频,也不想保存帧列表中的帧,因为我有大约 5000 张图像。
谢谢你,我很感激我能得到任何帮助。
【问题讨论】:
-
opencv 有一个 VideoWriter 类。您可以将一个图像一个接一个地推送(假设帧速率恒定)。
-
我看到了一些与此相关的线程以及 Python 的文档,但就是不知道该怎么做。你能帮忙吗?
标签: python numpy opencv matplotlib