0

我正在开发一个应用程序来处理点灰色相机 ( http://www.ptgrey.com/ ) 实时捕获的图像。Point Gray SDK 是一个 .net 包装器,可以是 32 位或 64 位。

然后为了处理捕获的图像,我使用了一个名为 Emgu CV ( http://www.emgu.com/ ) 的 openCV 包装器,它也有 32 位或 64 位两种风格。

现在,在 Vista64 上,我选择了 64 位版本的 FlyCapture(Point Grey 的 SDK)和 Emgu CV(在其安装中包含 openCV),希望能最大限度地提高性能。

最近我一直想从 XNA 调用我的 FlyCapture+Emgu DLL 代码,不幸的是它只存在于 32 位,我意识到我可能必须重新安装所有这些组件 32 位,因为我真的不想通过 IPC,远程等

除了 32 位固有的内存空间明显限制之外,我还应该期待性能损失吗?那会有多戏剧性,为什么?

提前感谢您的任何建议或解释。

4

3 回答 3

6

经过大量测试,事实证明x86 openCV + emgu 组合在使用 14 种不同典型 openCV 方法(平滑、图像复制、图像格式转换等)的序列的测试中比 x64 慢 1.408 倍。

于 2010-06-06T16:47:17.263 回答
1

试试看!

我可以想到它可能会以任何一种方式发展的原因(对您正在使用的软件不太熟悉)。

您的指针在 32 位进程中只有一半大,从而减少了内存压力。32 位软件的存在时间更长,并且可能得到了更好的优化。但是,另一方面,图像处理往往能很好地响应 64 位进程提供的更大的寄存器大小。

我怀疑表现会在同一个球场上,可能正负20%。但你永远无法确定。如果你得到数量级的类型差异,那么我会担心的。

于 2010-06-06T06:31:41.627 回答
1

我们有一个类似的情况(PT Gray 相机和我们的 C# 应用程序的 emgu openCV 包装器)。

还发现 emgu 在 x64 下甚至更快(win 7 与 win XP x86 相比)。首先,我认为 x64 在我的应用程序的其余部分上速度较慢,但​​那是在调试模式下。在发布模式下,性能是相当的。看起来VS2010(x64)下的调试版本比VS2008版本(x86)慢。

于 2010-08-31T09:13:16.213 回答