有意混合的opencv版本

时间:2011-08-02 14:58:54

标签: dll opencv versions

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

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

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

马丁。

1 个答案:

答案 0 :(得分:0)

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

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

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