【问题标题】:Is there a performance advantage in using a 64bit version of openCV+Emgu instead of 32bit?使用 64 位版本的 openCV+Emgu 而不是 32 位有性能优势吗?
【发布时间】:2011-02-28 07:47:28
【问题描述】:

我正在开发一个应用程序来处理点灰色相机 (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 位固有的内存空间明显限制之外,我还应该期待性能损失吗?这会有多戏剧性,为什么?

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

【问题讨论】:

    标签: c# opencv 32bit-64bit performance emgucv


    【解决方案1】:

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

    【讨论】:

    • 我同意你所说的...... Opencv 在 x64 上运行得非常快。
    【解决方案2】:

    试试看!

    我能想到为什么会出现这种情况的原因(对您正在使用的软件不太熟悉)。

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2010-10-09
        • 2011-03-21
        • 2021-12-19
        • 1970-01-01
        • 2010-12-03
        • 2011-04-09
        • 2010-11-27
        • 2021-07-08
        • 1970-01-01
        相关资源
        最近更新 更多