win10 vs2015源碼編譯opencv、opencv_contrib、Tesseract win10 vs2015源碼編譯tesseract4.0

1.軟件包準備

  • opencv源碼包地址:                官網  github
  • opencv_contrib源碼包地址:   github
  • Tesseract源碼包地址:            github
  • cmake.exe 下載地址:             官網

注意: opencv和open_contrib包的版本號要一致(好比都是3.4.0)html

Tesseract源碼安裝參考: win10 vs2015源碼編譯tesseract4.0c++

2. 使用cmake生成解決方案

分別指定源碼包(source code)存放位置, 編譯過程當中產生的二進制(build the binaries)文件存放位置, 而後點擊"Configure",  指定對應版本的編譯器, 例如Visual Studio 14 2015 Win64,即便用vs2015生成x64解決方案,[「Visual Studio 14 2015」生成x86解決方案]。 而後點擊"Finish"。 第一次配置完成後,會出現不少紅色提示,以下圖:git

須要修改對應的配置後  點擊Configure, 反覆Configure直至紅色徹底消失,而後點擊"Generate" 便可生成對應的解決方案。github

 修改配置以下:

  • BUILD_opencv_world: 將.lib或者.dll文件統一整合進一個world文件中,方便使用。但若想只使用一部分模塊可不勾選以減小體積。生成動態連接庫dll須要勾選BUILD_SHARED_LIBS 
  • ENABLE_CXX11: 支持c11特性
  • OPENCV_EXTRA_MODULES_PATH:  若使用opencv_contrib模塊,則在此處填寫解壓後的路徑,如 F:\opencv_contrib\modules\
  • Tesseract_INCLUDE_DIR:  Tesseract頭文件所在路徑
  • Tesseract_LIBRARY:  Tesseract lib文件所在路徑
  • Lept_LIBRARY:  leptonica lib文件所在路徑 (很重要, 必定要配置,不然可能找不到Tesseract)

 

 

 

 

建議取消勾選:

  • BUILD_DOCS :生成文檔,須要安裝Doxygen。官網提供了在線文檔和離線文檔。
  • BUILD_opencv_ts :一些單元測試代碼。
  • INSTALL_TESTS :與開發無關。

 

點擊configure後必定要保證Tesseract爲YES, 以下圖:ide

不然在編譯完end_to_end_recognition.cpp後,在運行時出現以下提示。post

OCRTesseract(00): Tesseract not found.

起初的幾回編譯怎麼都找不到Tesseract單元測試

後來經過opencv_contrib\modules\text下的CMakeLists.txt測試

以及opencv_contrib\modules\text\cmake 下的FindTesseract.cmakeui

 

發現LEPT_LIBRARY沒有找到對應的配置url

 

3. 編譯

打開OpenCV.sln,  選擇」Release"模式,選擇"生成"->"生成解決方案"

編譯成功後 可選擇進行安裝

而後選擇"Debug"模式,重複上面操做。

再將生成的opencv_world340d.dll、opencv_img_hash340d.dll拷貝到安裝目錄下的x64\vc14\bin中

opencv_world340d.lib、opencv_img_hash340d.lib拷貝到安裝目錄下的x64\vc14\lib中。

 

opencv的安裝目錄爲 C:/opencv

效果:

4.添加環境變量

爲了保證程序在運行時可以訪問到opencv_world340.dll或者opencv_world340d.dll

須要在環境變量PATH中添加

C:\opencv\build\x64\vc14\bin

5. 測試

1) 打開vs2015, 新建win32項目, 勾選」空項目", 取消"安裝開發生命週期檢查"

 

2) 「右擊」對應的項目>選擇「屬性"

3) 選擇"Vc++目錄", 點擊」包含目錄", 「編輯", 添加

C:\opencv\build\include\
C:\opencv\build\include\opencv
C:\opencv\build\include\opencv2

 

 

4) 點擊"庫目錄", 」編輯", 添加:

C:\opencv\build\x64\vc14\lib

 

5) 選擇"連接器"->"輸入", 

relase模式添加:

opencv_world340.lib

debug模式添加:

opencv_world340d.lib

 

 

 6) 效果以下圖:

 

 

7)

測試程序1:

#include <opencv2/opencv.hpp>
#include <string>
using namespace cv;
using namespace std;

int main()
{
    Mat im = imread("lena.jpg");  // lena.jpg和test1.cpp在同一個目錄下
    namedWindow("Picture");
    imshow("Picture", im);
    waitKey(0);
    destroyWindow("Picture");
    return 0;
}
test1.cpp

測試結果: test1.cpp在X64 DEBUG和RELEASE模式下都能經過

測試程序2):

end_to_end_recognition.cpp

 

測試用到的文件end_to_end_recognition.cpp、scenetext01.jpg、trained_classifierNM1.xml、trained_classifierNM2.xml都位於opencv_contrib源碼包目錄下的modules\text\samples中

爲了測試方便,右擊項目屬性,設置命令行參數

 將scenetext01.jpg、trained_classifierNM1.xml、trained_classifierNM2.xml複製到與end_to_end_recognition.cpp相同目錄下,運行便可。

 

若是使用命令行運行程序,則須要將scenetext01.jpg、trained_classifierNM1.xml、trained_classifierNM2.xml 複製到可執行程序所在目錄

 

 效果:

 測試結果: 在x64 RELASE模式下經過, DEBUG模式下出錯。

注意: 因爲編譯opencv使用的tesseract的lib爲release版本,因此在「DEBUG"模式下會出錯:

 可是在Release模式仍然可以調試

相關文章
相關標籤/搜索