【发布时间】:2019-12-05 19:44:30
【问题描述】:
我有来自视频的图像和带有索引的查找表。目标是通过使用查找表中的索引从每一帧生成一个新图像。我的代码使用我的笔记本电脑工作,但有点慢。我的目标是让它在 TX2 中工作。下面是我的代码,不知道为什么它很慢。
cap1 = cv2.VideoCapture(2)
with open('lookup_table.pkl', 'rb') as f:
lut_idx = pickle.load(f)
channels = 3 # Colored images
dim = 480 # Square image 480 x480
while (cap1.isOpened()):
ret1, left = cap1.read()
if ret1 == True:
newImg = np.reshape(np.reshape(together, (dim * dim , channels))[lut_idx],
(dim, dim, channels))
cv2.imshow('newImage', newImg) # Show image
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap1.release()
cv2.destroyAllWindows()
我可以做些什么来让它更快?我应该研究并行处理吗? 欢迎任何帮助。 谢谢
【问题讨论】:
-
首先您应该进行基准测试,看看是什么花费了时间。运行您的视频阅读代码,无需处理并计时。然后在不读取视频的情况下在静态帧上运行您的处理。然后,您将更好地了解您的最大可能速度是多少以及您应该优化什么。
-
我使用 python profiler 来确定哪个进程花费的时间最多。似乎读取图像数据和泡菜表是最大的一个。但是有没有办法让索引部分更快?。
-
请问获取图片和查找的时间是几点?
-
您到底想达到什么目标?用 lut_idx 置换像素?能否提供一些带有示例输入和预期输出的屏幕截图?
-
所以我有两个具有 235 度 FOV 的鱼眼相机输入。我正在尝试去扭曲它。在浪费了好几个月之后,我找到了一个大师的作品,他们使用数学函数来变形。它可以很好地完成工作。唯一的问题是它是用来扭曲图像而不是视频。所以有很多for循环。所以我决定做一个for循环和一个索引查找表。现在我可以实时去扭曲,唯一的问题是它对于两个鱼眼相机和 TX2 来说不够快。我需要视频源来驱动我的机器人。
标签: numpy array-indexing