实时附加到图像
本文关键字:图像 实时 | 更新日期: 2023-09-27 17:59:48
我需要从计算机麦克风中捕获音频数据,对其进行处理,然后实时绘制。处理每一帧将产生一个1-D阵列,我想在图像中显示该阵列,其中阵列中的每个值都映射到一种颜色。下一个音频帧经过类似的处理,然后显示在图像的下一行,以此类推。在matlab中,可以使用imagesc函数来实现这一点。我还希望用户能够上下滚动查看当前或以前的数据。我相信我需要将处理后的数据缓冲在文件或数据库中,然后如上所述异步更新绘图。我正在尝试使用C#来实现上述所有功能。
我的问题是:生成图像/情节的最佳方式是什么?我做了很多研究(微软图表、VTK、几篇代码项目文章),但找不到我想要的东西。
此外,在这种情况下,什么是最好的数据库?
我不认为有一个组件能完成您所描述的事情。在大多数框架/捆绑包中,所有图像都是通过本机系统调用(最终)可视化的,这些调用接受步幅、缓冲区等,全部由HANDLE驱动。所以,您可以用新行生成下一次的新图像,也可以通过将上一个图像叠加到新图像上来自己绘制。
滚动(也称为窗口)并不是微不足道的,但在内存中已经预先创建的图像被修复的情况下,它仍然是可能的。但是,请注意,基于GDI+的图像(.NET位图)的大小有点限制在9000px以上。请考虑使用IPP、AForge图像等替代方案。
我建议你自己画行,因为在你的任务中,由于行模糊,重新调整大小将是一个问题。所以,总而言之,你可能需要自己去做。