日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在没有安装OpenCV的电脑运行OpenCV程序

發布時間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在没有安装OpenCV的电脑运行OpenCV程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目來自OpenCV·China的每周一練:

我們在做項目時,通常需要把依賴于opencv,vs(例如vs2005),或者vc(例如vc6.0)的程序,在沒有安裝相關環境的電腦上去運行。那么現在有哪些方法可以擺脫這些依賴?(提供可行建議即可得10分)

http://www.opencvchina.com/thread-1368-1-1.html

前面的童鞋講得很全了,我再補充一下自己的理解~

OpenCV的安裝

我們下載的OpenCV安裝包一般包括源碼,示例,文檔和編譯好的動態鏈接庫(以前OpenCV可能需要自己編譯一遍,OpenCV2.3.1之后都有一個build的文件夾,有編譯好的mingw,vc9和vc10的版本)。
我們寫代碼如果調用OpenCV的函數,需要添加附加依賴項:
Include Directories : C:\OpenCV\OpenCV-2.4.2\build\include
Library Diractories: C:\OpenCV\OpenCV-2.4.2\build\x86\vc10\lib
然后還需要在 Linker->Input->Additional Dependencies 里添加會用到的各種XX.lib,XXd.lib
還有把兩個bin文件夾:
C:\OpenCV\OpenCV-2.4.2\build\x86\vc10\bin
C:\OpenCV\OpenCV-2.4.2\build\common\tbb\ia32\vc10
添加到 系統環境目錄
有的安裝教程里還會教我們在Source Directories添加OpenCV的源碼文件,其實是不需要的。因為實際調用OpenCV里的函數是用的dll的隱式調用方式。

DLL調用

隱式調用一般需要:

聲明函數接口的.h文件 ——include文件夾里的內容
鏈接動態庫的.lib文件 ——lib文件夾里的內容以及Input->Additional Dependencies添加的XX.lib
動態鏈接庫.dll文件 ——bin文件夾的內容
這里bin文件夾是在系統環境目錄里的,所以執行代碼是exe文件可以找到。也可以添加在系統文件中,把需要用到的dll拷貝到exe同一個文件夾下即可。
所以,如果把未發布的工程拷貝到沒有opencv的電腦上,只要把需要用的函數相關的.h,.lib以及.dll文件考過去即可。


另一種調用dll的方式是顯示調用:

顯示調用是不需要.lib和.h文件的,只會用到dll文件。

但需要在代碼里“顯示”加載要用到的函數。例如:

[cpp]?view plaincopy
  • HINSTANCE?hDLL=NULL;//生命DLL句柄????
  • hDLL=LoadLibrary("opencv_core242d.dll");??//加載DLL??
  • HMAT?myImread=(HMAT)GetProcAddress(hDLL,"imread");??//使用DLL中的函數??
  • 這樣在拷貝工程時只拷貝用到的DLL文件就可以。
    但這樣代碼寫得很麻煩,DLL換個名字版本之類的要改很多地方,一般用得不多。

    靜態編譯的exe程序

    如果只是給別人靜態鏈接的exe程序,比如一個demo,不用跑程序。

    最常用的方法就是一起拷貝exe和dll文件到目標電腦:
    也就是將需要用到的dll文件拷到exe文件夾下即可,Release拷貝XX.dll,Debug版本拷貝XXd.dll
    (所以我們寫Additional Dependencies不用到的盡量不寫,這樣拷的dll會少一些~)


    再一種方法就是樓上提到的把OpenCV的源碼一起編譯到可執行文件中。

    這種需要在寫代碼時把OpenCV的源文件加入到工程中。也就是用到的.cpp文件目錄添加到Source Directories項中。
    編譯頭文件可能會遇到"找不到文件結尾”之類的錯誤,在項目屬性Category中選擇"Precompiled Headers"和"Not using precompiled headers"即可。

    這樣工程不是調用的OpenCV編譯過的dll文件,而是把OpenCV當成你自己寫的文件一樣一起編譯。

    在沒有安裝OpenCV的電腦上只用拷貝最終的exe文件即可。不需要dll文件,只是生成的exe會比較大~

    轉載請注明出處:http://blog.csdn.net/xiaowei_cqu/article/details/8066329

    總結

    以上是生活随笔為你收集整理的在没有安装OpenCV的电脑运行OpenCV程序的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。