1

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

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

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

马丁。

4

1 回答 1

0

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

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

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

于 2011-08-02T16:48:07.640 回答