0

现在,我想做的是制作一个新的 GUI,本质上是一个使用 directX(更准确地说,direct3D)的软件,它显示来自 Axis IP 摄像机的流式图像。

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

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

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

所以,伙计们,你们对如何让我的程序更有效地工作有什么建议或建议吗?有什么事就告诉我。

4

3 回答 3

0

要从 Axis cams 捕获图像,您可以使用 iPSi c++ 库:http: //sourceforge.net/projects/ipsi/

它可用于捕获图像和控制相机缩放和旋转(如果可用)。

于 2009-08-25T11:04:31.170 回答
0

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

于 2009-08-25T10:20:18.090 回答
0

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

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

通过这种方式,您可以将视频帧速率与渲染帧速率分离,从而使丢帧更容易处理。

于 2009-08-25T10:04:03.863 回答