2011-08-02 56 views
0

我有一个使用OpenCV1.1的项目,现在已经开始使用OpenCV2.2。这个项目使用opencv的面部检测,这在2.2版本中比在1.1版本中慢了大约两倍。这种放缓影响了这个项目的实时性能。有意混合使用opencv版本

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

有没有人试过这个? 任何帮助,将不胜感激

马丁。

回答

0

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

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

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