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. mysql查询附近门店

    mysql 查询一个地点(经纬度) 附近N公里内的数据.(根据一个地点的经纬度查询这个地点方圆几公里内的数据)1.创建测试表 CREATE TABLE `location` ( `id` int(10 ...

  2. 使用DOM方法来遍历一个文档

    问题 你有一个HTML文档要从中提取数据,并了解这个HTML文档的结构. 方法 将HTML解析成一个Document之后,就可以使用类似于DOM的方法进行操作.示例代码: File input = n ...

  3. 【maven】入门教程

    一:Maven简介 1.Maven是什么? 是一个跨平台的项目管理工具.使用java语言开发(Maven 3.3+ require JDK 1.7 or above to execute)2. 为什么 ...

  4. mysql ORDER BY 中文出现错误问题

    在MySQL中,我们经常会对一个字段进行排序查询,但进行中文排序和查找的时候,对汉字的排序和查找结果往往都是错误的. 这种情况在MySQL的很多版本中都存在. 如果这个问题不解决,那么MySQL将无法 ...

  5. Linux命令全训练

    一.实验目的 为后续上机实验做准备,熟悉常用的Linux操作. 二.实验平台 操作系统:Ubuntu14.04 三.实验内容和要求 1.Linux系统中的常用快捷键 Tab 自动补全 上下箭头 显示历 ...

  6. springcloud starter(一)

    Spring Cloud - Getting Started Example, 转载自:https://www.logicbig.com/tutorials/spring-framework/spri ...

  7. BeanUtils实现对象拷贝(三)

    package beanutil; import java.lang.reflect.InvocationTargetException; import java.util.Date; import ...

  8. easyexcel

    导出: package com.example.demo.excel.demo0; import com.alibaba.excel.annotation.ExcelProperty; import ...

  9. reids rdb与aof

    rdb:时合高并发场景,容易备份恢复,会丢失部分数据 1.默认开启的方式,可以进过压缩,可以根据时间点生成快照 2.数据量大的情况下恢复快 3.bgsave一边开启fork保存文件,一边继续响应客户端 ...

  10. springboot邮通知553错误和

    com.sun.mail.smtp.SMTPSendFailedException: 553 Mail from must equal authorized user ; nested excepti ...