2011-08-25 64 views
1

我在Ubuntu 11.04中使用C++,OpenCV 2.2和g ++編寫了一個小項目。我需要創建一個庫(.so會更好),但我希望它可以在沒有安裝OpenCV的情況下在另一臺計算機上運行。
我試過使用g ++的-shared和-fPIC標誌來構建動態庫,並將OpenCV .so庫複製到工作目錄中。其實我只需要core和feature2d,但實際上它需要很多其他庫,包括highgui,它也有很多依賴關係。
我試過靜態鏈接,使用-Wl,-Bstatic標誌,但也不成功。 有人遇到同樣的問題嗎?我將不勝感激任何形式的幫助。如何在另一臺計算機(linux)上使用OpenCV運行C++庫?

+0

林靜國王將不會很有用,因爲highgui依賴於幾個系統庫。如果你不需要相機或視頻閱讀/寫作,那麼你可以關閉大部分依賴關係。如果這對你有效,那麼我可以發佈一個cmake命令來構建OpenCV,而不需要視頻支持。 –

+0

是的,我根本不需要在這個項目中使用highgui,但是它被OpenCV的一個libriries使用。非常感謝,我會嘗試你的解決方案。 – Gregory

回答

3

可以在不依賴系統庫的情況下構建OpenCV。要在Linux上的OpenCV的2.2把所有的依賴,你可以用以下參數運行cmake:

cmake -DWITH_1394=OFF -DWITH_CUDA=OFF -DWITH_EIGEN2=OFF -DWITH_FFMPEG=OFF -DWITH_GSTREAMER=OFF -DWITH_GTK=OFF -DWITH_OPENEXR=OFF -DWITH_PVAPI=OFF -DWITH_QT=OFF -DWITH_TBB=OFF -DWITH_UNICAP=OFF -DWITH_V4L=OFF -DWITH_XINE=OFF -DUSE_IPP=OFF -DOPENCV_BUILD_3RDPARTY_LIBS=ON .. 

但在這種情況下,你將不能夠使用許多的功能,形成highgui模塊:

  • 視頻讀寫
  • 帶攝像頭的工作
  • 與GUI工作的所有功能(如imshow)
+0

看來'cv :: imencode'和'cv :: imdecode'也是'highgui'。 –

+0

然而,他們確實可以在沒有系統庫的情況下使用多種格式 –

相關問題