• win10 vs2015源码编译opencv、opencv_contrib、Tesseract


    1.软件包准备

    • opencv源码包地址:                官网  github
    • opencv_contrib源码包地址:   github
    • Tesseract源码包地址:            github
    • cmake.exe 下载地址:             官网

    注意: opencv和open_contrib包的版本号要一致(比如都是3.4.0)

    Tesseract源码安装参考: win10 vs2015源码编译tesseract4.0

    2. 使用cmake生成解决方案

    分别指定源码包(source code)存放位置, 编译过程中产生的二进制(build the binaries)文件存放位置, 然后点击"Configure",  指定对应版本的编译器, 例如Visual Studio 14 2015 Win64,即使用vs2015生成x64解决方案,[“Visual Studio 14 2015”生成x86解决方案]。 然后点击"Finish"。 第一次配置完成后,会出现很多红色提示,如下图:

    需要修改对应的配置后  点击Configure, 反复Configure直至红色完全消失,然后点击"Generate" 即可生成对应的解决方案。

     修改配置如下:

    • BUILD_opencv_world: 将.lib或者.dll文件统一整合进一个world文件中,方便使用。但若想只使用一部分模块可不勾选以减少体积。生成动态链接库dll需要勾选BUILD_SHARED_LIBS 
    • ENABLE_CXX11: 支持c11特性
    • OPENCV_EXTRA_MODULES_PATH:  若使用opencv_contrib模块,则在此处填写解压后的路径,如 F:opencv_contribmodules
    • Tesseract_INCLUDE_DIR:  Tesseract头文件所在路径
    • Tesseract_LIBRARY:  Tesseract lib文件所在路径
    • Lept_LIBRARY:  leptonica lib文件所在路径 (很重要, 一定要配置,否则可能找不到Tesseract)

     

     

    建议取消勾选:

    • BUILD_DOCS :生成文档,需要安装Doxygen。官网提供了在线文档和离线文档。
    • BUILD_opencv_ts :一些单元测试代码。
    • INSTALL_TESTS :与开发无关。

    点击configure后一定要保证Tesseract为YES, 如下图:

    否则在编译完end_to_end_recognition.cpp后,在运行时出现如下提示。

    OCRTesseract(00): Tesseract not found.

    起初的几次编译怎么都找不到Tesseract

    后来通过opencv_contribmodules ext下的CMakeLists.txt

    以及opencv_contribmodules extcmake 下的FindTesseract.cmake

     

    发现LEPT_LIBRARY没有找到对应的配置

    3. 编译

    打开OpenCV.sln,  选择”Release"模式,选择"生成"->"生成解决方案"

    编译成功后 可选择进行安装

    然后选择"Debug"模式,重复上面操作。

    再将生成的opencv_world340d.dll、opencv_img_hash340d.dll拷贝到安装目录下的x64vc14in中

    opencv_world340d.lib、opencv_img_hash340d.lib拷贝到安装目录下的x64vc14lib中。

    opencv的安装目录为 C:/opencv

    效果:

    4.添加环境变量

    为了保证程序在运行时能够访问到opencv_world340.dll或者opencv_world340d.dll

    需要在环境变量PATH中添加

    C:opencvuildx64vc14in

    5. 测试

    1) 打开vs2015, 新建win32项目, 勾选”空项目", 取消"安装开发生命周期检查"

    2) “右击”对应的项目>选择“属性"

    3) 选择"Vc++目录", 点击”包含目录", “编辑", 添加

    C:opencvuildinclude
    C:opencvuildincludeopencv
    C:opencvuildincludeopencv2

    4) 点击"库目录", ”编辑", 添加:

    C:opencvuildx64vc14lib

     

    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 extsamples中

    为了测试方便,右击项目属性,设置命令行参数

     将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模式仍然能够调试

  • 相关阅读:
    真-关闭win10安全中心(windows defender)
    HOOK IDT频繁蓝屏(Window 正确 HOOK IDT)
    windows 驱动开发 MDL 内核层 用户层共享内存
    C++将时间格式转换成秒数
    关于HOOK KiPageFault需要用到自旋锁研究
    提高VS2010/VS2012编译速度
    apache2.2服务无法启动 发生服务特定错误:1 的解决办法 (windows服务错误 日志查看方法)
    内核同步对象
    C++/MFC-线程优先级
    python xml转excel
  • 原文地址:https://www.cnblogs.com/hupeng1234/p/8548834.html
Copyright © 2020-2023  润新知