【问题标题】:intentional mix of opencv versions有意混合 opencv 版本
【发布时间】:2011-10-18 08:27:15
【问题描述】:

我有一个使用 OpenCV1.1 的项目,现在已转为使用 OpenCV2.2。这个项目使用了opencv的人脸检测,这在2.2版本中恰好比1.1慢两倍左右。这种减速正在影响该项目的实时性能。

我想知道我是否可以在 1.1 中使用面部检测器,同时在项目的其他时间不关键部分使用 2.2。所以我尝试了几件事,但效果有限。 首先,我尝试在同一个项目中使用这两个版本,但我遇到了各种无法解决的构建问题。 然后我尝试在 1.1 中仅使用面部检测器制作一个 dll,并在使用 2.2 的项目中使用此 dll。这行得通,但奇怪的是,尽管我可以测量面部检测的速度增加(它是包装在 dll 中的 opencv1.1),但项目中的其余部分似乎已经放慢了速度。我不知道发生了什么,可能是opencv版本之间的一些内部冲突,死锁或类似的东西。

以前有人试过吗? 任何帮助将不胜感激

马丁。

【问题讨论】:

    标签: dll opencv versions


    【解决方案1】:

    它可以工作。不要将您的项目链接到 v1.1 DLL。最好将 OpenCV 1.1 DLL 重命名为其他名称,并防止系统上可能与 v2.2 DLL 发生冲突。

    诀窍在于loading DLLs dinamically。使用 LoadLibrary() 将 v1.1 DLL 加载到您的应用程序中,并使用 GetProcAddress() 检索函数的地址(以便稍后在您的代码中调用它们)。

    注意:对于您在代码中使用的 OpenCV v1.1 的每个函数,您需要调用一次GetProcAddress()

    【讨论】:

      猜你喜欢
      • 2017-07-24
      • 1970-01-01
      • 2013-11-27
      • 1970-01-01
      • 2011-01-29
      • 2014-08-28
      • 2019-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多