我正在开发一个 openCV 界面,我在其中显示一堆连续图像(实际上是视频,但我使用的是图像)。我希望能够通过按住一个键真正快速地“滚动”图像。我当前的实现非常天真,它遍历所有图像并执行以下操作:
frame = cv2.imread(img_file, 1)
cv2.imshow('frame', frame)
所以每次从磁盘读取时都会有 IO 延迟,我认为这就是它慢得让人痛苦的原因。 python API 是否有任何好的方法可以将所有图像加载到内存中,或者至少使用 imread
之类的东西在内存中进行批处理,这样我就可以在浏览时使用它们?或者对如何实现这一点的任何建议持开放态度。谢谢。
最佳答案
将每一帧添加到一个列表中,通过列表索引访问
frames=[]
files = [...some list of files..]
for img_file in files:
frame = cv2.imread(img_file, 1)
frames.append[frame]
# and then later
for frame in frames:
cv2.imshow('frame', frame)
# or by individual frame
cv2.imshow('frame', frames[123])
关于python - 在 python openCV 中一次将许 multimap 像读入内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42036447/