讓opencv程序在沒有安裝opencv的電腦上運行


  經常需要把用opencv寫的程序拿到沒有裝opencv的電腦上去運行和演示,要讓opencv程序脫離opencv環境,一般有兩種方法:

  一種是動態鏈接opencv,即把相應的dll拷貝到exe所在目錄,然后一起拿到目標電腦上去運行;另一種是將相應dll中的函數打包進exe,然后直接拷貝exe到目標電腦上去運行,即靜態編譯。

  這里以VS2008+opencv2.4.6編寫的win32控制台程序為例介紹靜態編譯的步驟:

  1. 將opencv安裝目錄\build下的include文件夾拷貝到當前工程目錄下,重命名為opencv_include;

  2. 將opencv安裝目錄\build\x86\vc9下的staticlib文件夾拷貝到當前工程目錄下,重命名為opencv_lib;

  

  3. 在VS左側的目錄樹中右鍵項目名稱,選擇“屬性”,在“配置屬性”->“C/C++”->“常規”->“附加包含目錄”中添加opencv_include目錄。

  

  4. 在“連接器”->“輸入”->“附加依賴項”里添加相應的lib文件,debug版添加帶d的lib,release版添加不帶d的lib。

   

  //win32控制台程序需要的lib
  vfw32.lib
  comctl32.lib

  //opencv用到的第三方lib
  .\opencv_lib\libjasperd.lib 
  .\opencv_lib\libjpegd.lib  
  .\opencv_lib\libpngd.lib  
  .\opencv_lib\libtiffd.lib
      .\opencv_lib\zlibd.lib 

  //opencv各模塊的lib
  .\opencv_lib\opencv_calib3d246d.lib 
  .\opencv_lib\opencv_contrib246d.lib  
  .\opencv_lib\opencv_core246d.lib 
  .\opencv_lib\opencv_features2d246d.lib  
  .\opencv_lib\opencv_flann246d.lib 
  .\opencv_lib\opencv_gpu246d.lib 
  .\opencv_lib\opencv_haartraining_engined.lib 
  .\opencv_lib\opencv_highgui246d.lib 
  .\opencv_lib\opencv_imgproc246d.lib 
  .\opencv_lib\opencv_legacy246d.lib 
  .\opencv_lib\opencv_ml246d.lib  
  .\opencv_lib\opencv_nonfree246d.lib 
  .\opencv_lib\opencv_objdetect246d.lib 
  .\opencv_lib\opencv_photo246d.lib 
  .\opencv_lib\opencv_stitching246d.lib  
  .\opencv_lib\opencv_ts246d.lib  
  .\opencv_lib\opencv_video246d.lib 
  .\opencv_lib\opencv_videostab246d.lib 

   5. 在“C/C++”->“代碼生成”->“運行時庫”中,debug版選擇MTd,release版選擇MT。

  

  以上設置完成后,編譯即可。

  PS:

  1. 通常include和lib還可以在VS2008的“工具”->“選項”->“項目和解決方案”->“VC++目錄”的“包含文件”中進行設置,但這樣的設置是保存在VS2008中,而不是當前工程中,如果將整個工程拷貝到別的電腦上,還需要再次設置才能正確編譯。而這里介紹的方式則不用再配置,可以直接修改和編譯。

  2. 這里使用了相對路徑,其中“.”表示當前目錄,“..”表示當前目錄的上級目錄。

  3. opencv早一點的版本中可能並沒有包含已經編譯好的lib,所以需要自己編譯。

  4. 在使用opencv讀avi文件時,發現cvCreateFileCapture總是返回空指針,研究半天才發現是因為opencv_ffmpeg.dll沒有正確加載。opencv_ffmpeg.dll並沒有相應的lib,所以仍然需要將該dll拷貝至工程目錄下編譯和運行。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM