我想制作一个基于 QT 的 GUI 程序,它将热图覆盖在来自 20fps 流式 FHD 视频的图像上。
目标图像看起来像这样
(此外,还应显示叠加图像旁边的颜色条。)
每个图像的热图源大小为 100x40,因此每帧都需要 FHD(1920x1080) 的插值。
(仅供引用,热图源的最小值和最大值分别约为 10 和 100000。)
首先,我使用 Opencv 中的 cv2.VideoCapture 函数从视频中获取图像。然后,我用谷歌搜索了一些使用 Matplotlib 组合图像和热图的示例,例如:
我面临的问题是处理速度要满足 20fps 的 FHD 分辨率。
看起来 Opencv 比 Matplotlib 更适合实时处理。
(我找不到使用 Pyqtgraph 显示热图和颜色条的好方法,即使它提供了高速。)
因此,我使用 cv2.applyColorMap 和 cv2.resize 搜索了另一种方式。
看起来 cv2.applyColorMap 函数不像 Matplotlib 中的 imshow 函数那样自动调整值的范围,因此结果图像的颜色很奇怪。
此外,使用 QtGui.QImage 和 QtGui.QPixmap 需要将 Opencv 图像用于 QtWidget,这会导致额外的延迟。
最后,我搜索的方法整体处理时间不能满足要求。
请告诉我解决方法。
提前致谢。
最佳答案
我为闭路电视录像做了一些事情,也许你能得到一些帮助,
使用 OpenCV,使用第一个基本帧生成运动热图。
https://github.com/ajayrawat12/generate_heatmap
关于python - 在 Python 中流式传输 FHD 视频的图像上覆盖热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51761623/