结合Direct3D,Axis制作多个IP摄像头GUI

时间:2009-08-25 09:41:57

标签: c++ camera direct3d

目前,我要做的是创建一个新的GUI,本质上是一个使用directX(更确切地说,direct3D)的软件,它显示来自Axis IP摄像机的流媒体图像。

暂时我认为整个程序的流程是这样的: 1.获取Axis程序以获取流式图像 2.将图像传递给Direct3D程序。 3.在屏幕上显示程序。

目前我已经制作了一个基本的Direct3D应用程序,可以从avi视频加载和显示视频帧(用于测试)。我不知道如何使用DirectX直接从视频加载图像,因此我使用OpenCV来保存视频中的帧并让DX上传它们。很慢。

现在我有一些不清楚的事情: 1.如何获得一个在C ++中运行的Axis程序(稍后再查看示例,没什么大不了的) 2.如何直接从Axis IP摄像机程序上传图像。

那么伙计们,您对如何使我的计划更有效地工作有什么建议或建议吗?任何事都让我知道。

3 个答案:

答案 0 :(得分:0)

您可能会发现使用directshow并在远端添加自定义渲染器会更快,直接将解压缩的视频数据直接复制到Direct3D纹理。

非常值得双重缓冲纹理。即具有纹理0显示和纹理1也被上传,然后在新帧可用时交换2(即在上传到纹理0时显示纹理1)。

通过这种方式,您可以从渲染帧速率中解除视频帧速率,这使得丢帧更容易处理。

答案 1 :(得分:0)

我使用Direct3D纹理的就地更新(使用IDirect3DTexture9::LockRect),它的工作速度非常快。你的程序的哪一部分工作缓慢?

答案 2 :(得分:0)

对于来自Axis凸轮的捕获图像,您可以使用iPSi c ++库:http://sourceforge.net/projects/ipsi/

它可用于拍摄图像和控制相机变焦和旋转(如果有)。