Windows下CMake编译安装OpenCV

这是一个面向新手的在windows上运进opencv, helloword的教程. 在这里我们使用vs2019来编译opencv, 并运行一个helloworld来展示如何用CMake来编译运行.
 
0. 准备工作
    需要的软件: VisualStudio 2019 社区版, CMake, 在系统变量下加入VS2019 MSBuild.exe 的路径.
 
1. 下载:

在 https://opencv.org/releases/ 下载source文件

2. 编译:
    打开CMakeGUI 如图:在Browser Source处选择解压后的源码, 在Build处选择build结果存放的目录.
 然后勾选需要build的内容, 最后点 Generate. 在这里我们选择 Visual Studio 16 2019, 设置 平台为 x64

生成过程中可能会遇到网络问题导至的下载错误(需要自行解决网络问题), 链接库错误等(可考虑去掉不需要的功能)
如:在这里我们选择了opencv_world, 并去掉了对于python3的支持.

3. 编译
生成结束后, build文件夹下内容应如下所示:
我们用vs打开OpenCV.sln, 选择ALL_BUILD后进行编译
如果成功会有如下的显示:

这时build文件夹下应该会有生成出的install文件夹(没有就选install再进行一次编译)内容如下. 
能看到这个, 我们的opencv就编译好了.

最后需要在系统环境变量的PATH中加入opencv的bin路径: D:\Developments\opencv_build\install\x64\vc16\bin 
 
4. 编译运行helloworld
我们同样使用cmake来编译运行helloworld
 
demo.cpp
 1 #include "opencv2/opencv.hpp"
2 #include "opencv2/highgui/highgui.hpp"
3
4 using namespace cv;
5
6 int main(int argc, char** argv) {
7 //create a gui window:
8 namedWindow("Output",1);
9 //initialize a 120X350 matrix of black pixels:
10 Mat output = Mat::zeros( 120, 350, CV_8UC3 );
11 //write text on the matrix:
12 cv::putText(output, "Hello World", cv::Point(10,output.rows-18),
13 cv::FONT_HERSHEY_SIMPLEX, 0.4, cv::Scalar(200,200,250), 1, 8);
14 //display the image:
15 imshow("Output", output);
16 //wait for the user to press any key:
17 waitKey(0);
18 return 0;
19
20 }
下面是一个基础的opencv. hello world级cmake文件. 先设置 OpenCV_DIR 到install文件夹, cmake的 find_package 会自动找到头文件和库的位置. 在编译完程序后, 需要link opencv_world这个库.
 
CMakeLists.txt
 1 project("DEMO")
2
3 cmake_minimum_required(VERSION 3.21)
4
5 set(OpenCV_DIR "D:/Developments/opencv_build/install") # opencv安装位置
6 find_package(OpenCV REQUIRED) # 让CMake自动找OpenCV的头文件和库
7
8 include_directories(${OpenCV_INCLUDE_DIRS}) # 要包含的头文件
9 add_executable(demo demo.cpp)
10 target_link_libraries(demo "D:/Developments/opencv_build/install/x64/vc16/lib/opencv_world453d.lib" ) # 链接OpenCV库
 
新建build文件夹后, cmake ..
再 MSBuild.exe DEMO.sln 进行编译
最后, 生成好的文件会在 Debug 下

Windows下CMake编译安装OpenCV的更多相关文章

  1. 在 Linux 下用 CMAKE 编译安装 OpenCV 3.2.0

    [安装相关软件和库] 1.安装CMAKE:这里使用apt-get来安装; CMAKE 是一个跨平台编译工具,能够输出各种makefile,和project 文件,指导编译器编译,对CMAKE具体的可以 ...

  2. windows下Redis编译安装

    redis是现在比较流行的noSQL,主流大型网站都用的比较多,很多同学不知道怎么安装,这里介绍在windows下面安装以及扩展,提供学习使用,实际使用环境多在Linux下. 首先到相应网站下载red ...

  3. linux下cmake编译安装、配置和卸载mysql

    WIN10下虚拟机:VMware workstation 12 PRO 安装 # 1.查看系统版本 [root@vm-xiluhua][/home/xiluhua]$ cat /etc/redhat- ...

  4. centos下cmake编译安装mysql5.7.24

    一.centos6.5推荐最小安装.自定义添加如图两个包 二.安装cmake3.0(mysql5.7要求cmake2.9以上.cmake3.1要求gcc g++4.8以上.所以选自3.0) 1.分别执 ...

  5. Linux 下编译安装OpenCV(zhuanzai)

    http://www.cnblogs.com/emouse/archive/2013/02/22/2922940.html Cmake的安装 OpenCV 2.2以后版本需要使用Cmake生成make ...

  6. 判断OpenCV是否为共享库,Windows基于CMake编译Caffe需要opencv共享库

    判断OpenCV是否为共享库,Windows基于CMake编译Caffe需要opencv共享库 TLDR 只考虑windows下opencv预编译包的情况. 对于opencv2.4.x系列,cmake ...

  7. 在Ubuntu 16.04 LTS下编译安装OpenCV 4.1.1

    目录 一 安装前的准备 二 编译并安装OpenCV 4.1.1 注:原创不易,转载请务必注明原作者和出处,感谢支持! OpenCV目前(2019-8-1)的最新版本为4.1.1.本文将介绍如何在Ubu ...

  8. linux源码编译安装OpenCV

    为了尽可能保证OpenCV的特性,使用OpenCV源码编译安装在linux上.先从安装其依赖项开始,以ubuntu 14.04.X为例讲解在Linux上源码编译安装OpenCV,其他linux版本可以 ...

  9. [转]QGis2.9在windows下的编译以及二次开发包下载

    今天心血来潮,将QGis在github上的代码更新后,又编译了一下.留意到源代码包里面的INSTALL文件有更新,于是本次编译完全基于官方的编译说明.编译过程非常顺利,除了在CMake的第一次conf ...

随机推荐

  1. 如果被问到 HTTP 协议,你真的能讲清楚吗?

    前段时间,在和许久未见的老同学聊天时,突然被问到 http 协议到底是什么?脑海里面第一时间想起来的就是 request 请求.response 响应之类的词汇,但是这样讲他真的能知道是什么吗?我反问 ...

  2. 【spring 注解驱动开发】spring对象的生命周期

    尚学堂spring 注解驱动开发学习笔记之 - 生命周期 生命周期 1.生命周期-@Bean指定初始化和销毁方法 2.生命周期-InitializingBean和DisposableBean 3.生命 ...

  3. Qt简单的解析Json数据例子(一)

    要解析的json的格式为: { "rootpath": "001", "usernum": 111, "childdep" ...

  4. springgateway

    SpringGateAway: 先进行鉴权,然后进行路由,日志什么等等

  5. 4.React生命周期

    4.React生命周期 4.1引出生命周期 class Life extends React.Component { state = { opacity:0.5 } death = () => ...

  6. vue-cli3.x中的webpack配置,优化及多页面应用开发

    官方文档 vue-cli3以下版本中,关于webpack的一些配置都在config目录文件中,可是vue-cli3以上版本中,没有了config目录,那该怎么配置webpack呢? 3.x初始化项目后 ...

  7. 超实用的idea技巧,windows技巧,用于节省时间!

    进去https://zhangjzm.gitee.io/self_study 找平常积累,或者其它的

  8. 基于ECDHE的TLS握手流程

    <!doctype html>3.3 基于ECDHE的TLS握手流程 html { overflow-x: initial !important } :root { --bg-color: ...

  9. C# Dapper基本三层架构使用 (三、BLL)

    BLL层介绍 业务逻辑层用于做一些有效性验证的工作,以更好的保证程序运行的健壮性.如完成数据添加.修改和查询业务等:不允许指定的文本框中输入空字符串,数据格式是否正确以及数据类型验证:用户权限的合法性 ...

  10. 剑指offer计划16( 排序简单)---java

    1.1.题目1 剑指 Offer 45. 把数组排成最小的数 1.2.解法 这题看的题解,发现自己思路错了. 这里直接拿大佬的题解来讲吧. 一开始这里就把创一个string的数组来存int数组 Str ...