• VS2013+OpenCV3.4.2编译


    一、准备工作:

    (1)在OpenCV官网下载3.4.2版本(注意选择Win pack),https://opencv.org/releases.html。

    (2)下载Contrib模块,https://github.com/opencv/opencv_contrib/releases/tag/3.4.2(记住opencv是什么版本,contrib就下什么版本,必须对应否则编译会出问题)

    (3)下载CMake,下载后直接安装即可。https://cmake.org/download/

    二、编译生成

    下载的OpenCV是一个exe格式的文件,点击以后解压到你自己指定的目录即可,解压出来的文件包含一个source目录和一个build目录,实际上build目录就是已经编译好的可以使用的包了,但是不包含contrib模块,而且是64位的,

    下面我们开始编译完整的32位版本。

    (1)打开Ccmake-gui.exe

    (2)点击Browse Source选择你解压出来的OpenCV Source目录,点击Browse Build选择一个目录用来存放生成的工程文件(自己创建一个目录),

    (3)点击Configure,选择VS 2013,然后点击Finsh,然后CMake开始生成工程,注意此过程会从网上下载ffmpeg和ippicv两个库,所以需要联网。

    (4)编译选择:

    1.如果你想编译成静态库,那么把BUILD_SHARED_LIBS的钩去掉,这样就不用每次发布程序都带一堆动态库。

    2.如果你想减少库文件,可以勾选BUILD_opencv_world,这样很多库会集成到opencv_world342.lib,那么你每次新建工程就不需要填写一大堆库链接了,但是可能也会把很多没用到的库包含进来

    增加程序体积,所以我没有勾选,还是保持原来的。

     

    3.如果你已经下载了contrib模块,解压模块,然后设置OPENCV_EXTRA_MODULES_PATH指向contrib的modules目录。如果你没下载这个模块,就不用做这一步了,工程照样能够正常编译。

    (5)开始生成

    选择完毕再次点击configure按钮,执行完毕还有红字则继续点击configure直到全部变成白色,然后点击Generate。

    看到Configuring done、Generating done就表示已经搞定了。

    (6)编译工程

    进入你创建的Build目录,用vs打开OpenCV.sln工程,找到INSTALL然后点击生成,编译的时候把360杀毒和什么安全卫士之类的关闭,我因为打开导致cmake出错,关闭后就完全正常了,接着等待编译完成就OK了。编译完成后切换到Release模式再次编译。

    (7)测试

    1.用VS2013创建一个控制台程序,点击工程名右键-属性-配置属性-VC++目录,

    打开包含目录,添加include,include/opencv,include/opencv2三个目录

    2.添加库目录:install\x86\vc12\staticlib

    3.点击配置属性-链接器-输入,选择附加依赖项,添加需要的库文件。DEBUG模式的都是*d.lib,RELEASE的是*.lib,根据自己项目引用到的模块来添加,我这里

    需要添加的库有:

     ippicvmt.lib
    IlmImfd.lib
    ippiwd.lib
    ittnotifyd.lib
    libjasperd.lib
    libtiffd.lib
    libwebpd.lib
    libjpeg-turbod.lib
    libpngd.lib
    opencv_core342d.lib
    opencv_highgui342d.lib
    opencv_imgcodecs342d.lib
    opencv_imgproc342d.lib
    zlibd.lib

    4.编写代码

     1 #include "stdafx.h"
     2 #include <opencv2/opencv.hpp>
     3 #include <opencv2/highgui.hpp>
     4 
     5 using namespace cv;
     6 
     7 int _tmain(int argc, _TCHAR* argv[])
     8 {
     9     Mat mat;
    10     mat = imread("home.jpg",CV_LOAD_IMAGE_UNCHANGED);
    11     if (mat.empty())
    12         return -1;
    13     imshow("MyWindow", mat);
    14     waitKey(0);
    15     destroyWindow("MyWindow");
    16     return 0;
    17 }
    View Code


    5.运行程序

  • 相关阅读:
    hmset
    java 调用mongo 判断大于等于 并且小约等于<=
    Maven项目,别人的没问题,自己机器一直有问题
    linux 时间datetimectl 问题
    真正手把手教 git
    0324-SQLMAP使用参数备注
    安全推荐网址:
    JavaScript Base64 作为文件上传的实例代码解析
    学习笔记|变量的解构赋值
    学习笔记|let 和 const 命令
  • 原文地址:https://www.cnblogs.com/WushiShengFei/p/9474382.html
Copyright © 2020-2023  润新知