2011-08-02 84 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()