我想制作一个基于QT的GUI程序,该程序将热图叠加在来自20fps流FHD视频的图像上。 目标图像看起来像这样
(此外,还应显示覆盖图像旁边的颜色栏。)
每个图像的热图源大小为100x40,因此每帧需要内插FHD(1920x1080)。 (仅供参考,热图源的最小值和最大值分别约为10和100000。)
首先,我在Opencv中使用了cv2.VideoCapture函数从视频中获取图像。然后,我搜索了一些使用Matplotlib组合图像和热图的示例,例如:
我面临的问题是FHD分辨率的处理速度要达到20fps。
对于实时处理,Opencv似乎比Matplotlib更为成熟。 (即使Pyqtgraph提供了很高的速度,我也找不到找到显示热图和颜色条的好方法。)
因此,我使用cv2.applyColorMap和cv2.resize搜索了另一种方法。 看起来cv2.applyColorMap函数不会像Matplotlib中的imshow函数那样自动调整值的范围,因此结果图像的颜色很奇怪。
此外,需要使用QtGui.QImage和QtGui.QPixmap将Opencv图像用于QtWidget,这会导致额外的延迟。 最后,我搜索的方法的总处理时间不能满足要求。
请告诉我解决方法。
谢谢。
答案 0 :(得分:0)
尽管我为CCTV视频素材做了一些工作,也许您可以得到一些帮助, 使用OpenCV,使用第一个基本框架生成运动热图。