本文的案例内容源自于图书**《学习OpenCV 4:基于Python的算法实战》**,该书是国内第一本完整介绍OpenCV4的图书,第一章有在各个平台搭建环境的介绍,后面每个章节都有对模块的导读、模块经典算法的案例介绍以及进阶阅读,适合图像处理、计算机视觉领域的初学者以及相关的工程开发人员。

另外,对计算机视觉入门的读者请参考图书**《深度学习计算机视觉实战》**,从理论讲解到实战案例,到模型部署一站式搞定,非常适合入门。
OpenCV库编译结果请关注公众号“计算机视觉与OpenCV”获取。


学习OpenCV4:OpenCV各模块介绍
Windows上进行C++开发,常用的IDE(集成开发工具)为Visual Studio,该软件由微软发布,最新版本为Visual Studio 2019(Visual Studio 2022正式版待发布)。本案例基于Visual Studio 2019开发,Visual Studio 2019的安装方法如下。

安装前读者需要去官网(https://visualstudio.microsoft.com/zh-hans/vs/)下载安装文件,对于个人开发者,可以选择下载社区版Community 2019,如图1.6所示。

图1.6

Community 2019下载的文件名称为vs_Community.exe,双击该文件进行安装,安装过程中读者可以选择下载安装工作负载(即不同开发环境)与单个组件,如图1.7所示。

图1.7

Visual Studio 2019支持C++桌面开发,Python开发,Node.js开发等,读者可以选择自己需要的环境进行安装,本案例需要C++桌面开发,勾选安装即可,安装完成重启即完成了Visual Studio 2019的安装。

OpenCV常用的两种开发语言是C++和Python,本节讲解在Windows下搭建OpenCV C++语言开发环境,环境搭建方法有两种:安装官方发布的库文件和源码编译。

第一种方法:库文件安装

使用库文件安装的方法进行环境搭建过程如下:

首先下载库文件,如图1.8所示,进入官网选择Library->Releases,进入Release库文件包下载页面。

​图1.8

 在图1.8中选择Windows系统的文件下载,点击选择之后会自动开始下载。

本案例选择OpenCV-4.5.2版本,下载的文件名为opencv-4.5.2-vc14_vc15.exe,双击该文件解压,如图1.9所示。

图1.9

也可以右键选择文件,“解压到当前文件夹”,会在当前路径下解压得到文件夹opencv,其中包含两个子文件夹:

– build,存放编译的二进制库文件;

– sources,存放当前版本的源码。

进入build文件夹,路径下有六个文件夹:

– bin,存放第三方库依赖文件;

– etc,存放资源文件;

– include,存放头文件;

– java,存放Windows系统Java库文件;

– python,存放Windows系统Python语言安装文件;

– x64存放Windows C++库文件,包含vc14和vc15两个版本。

对于Visual Studio 2019,可以选用最新版本的vc15编译器对应的库文件,vc15路径下包含两个文件夹:bin(存放动态库文件)和lib(存放静态库文件),OpenCV工具库调用最重要的三个文件为:头文件(存放于include文件夹)、动态库(opencv_world452.dll或者opencv_world452d.dll)以及静态库(opencv_world452.lib或者opencv_world452d.lib)。

下载解压完成后,需要配置OpenCV开发环境,并编写测试代码进行测试。

选择打开Visual Studio 2019,创建新项目。创建项目可以直接选择创建“控制台应用”,创建的项目中有主程序,并默认输出“Hello World”,如图1.10所示。

图1.10

配置新项目,设置项目名称和项目位置,解决方案名称可以使用默认的,和项目名称相同,如图1.11所示。

图1.11

在项目中需要配置OpenCV库引用才能使用OpenCV,环境配置需要配置三个方面内容:包含目录,库目录和链接器依赖项。包含目录与库目录的配置如图1.12所示。

图1.12

在“链接器-输入-附加依赖项”中配置附加依赖项,即静态库文件名称,如图1.13所示,配置时注意选择Debug或Release对应的静态库文件。

图1.13

选择“应用”和“确定”后即完成配置,然后编写测试代码测试OpenCV库的使用,本案例的测试方法为读取一张图像,并将图像显示出来。

// OpenCVdemo.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。#include <iostream>#include "opencv2/opencv.hpp"int main(){cv::Mat img = cv::imread("src.jpg", 1);         //图像读取cv::imshow("测试图像显示", img);                //图像显示cv::waitKey(0);                                 //等待读者操作cv::destroyWindow("测试图像显示");              //窗口对象销毁}

选择项目,点击右键“生成”,编译项目,编译完成结果如图1.14所示。

图1.14

编译没有出错,此时可以点击图1.14中的“本地Windows调试器”或者按下F5,运行项目。如果读者没有做额外的配置,此时运行项目会弹出图1.15所示的错误框。

图1.15

这个错误称为“运行时错误”,运行时错误的常见原因是动态库文件无法找到或者不匹配。这种问题的解决办法有如下两种:

n 第一种方法是将动态库路径配置到环境变量中。读者可以选择“计算机—>属性—>高级系统设置—>环境变量”,找到Path变量,将OpenCV文件包中的opencv/build/x64/vc15/bin路径配置到环境变量中,这样运行时就能找到动态库的路径。

n 第二种方法就是将动态库拷贝到生成的可执行文件所在路径中,如图1.16所示。

图1.16

这两种办法是为了让可执行文件OpenCVdemo.exe能在搜索路径中找到OpenCV的动态库文件,当前路径和环境变量都是Windows系统中可执行文件链接时的搜索路径。

再次执行,程序正常运行,如图1.17所示,表明Windows系统中配置OpenCV C++语言开发环境完成。

图1.17

在C++语言开发时,需要包含"opencv2/opencv.hpp"头文件,该头文件对所有模块的头文件做了引用:

#ifndef OPENCV_ALL_HPP#define OPENCV_ALL_HPP// 该头文件仅用于定义哪些模块参与了编译,定义了HAVE_OPENCV_modulename的值#include "opencv2/opencv_modules.hpp"// Core模块为必需的模块#include "opencv2/core.hpp"// 通过HAVE_OPENCV_modulename检查可选模块的引入#ifdef HAVE_OPENCV_CALIB3D#include "opencv2/calib3d.hpp"#endif#ifdef HAVE_OPENCV_FEATURES2D#include "opencv2/features2d.hpp"#endif#ifdef HAVE_OPENCV_DNN#include "opencv2/dnn.hpp"#endif#ifdef HAVE_OPENCV_FLANN#include "opencv2/flann.hpp"#endif#ifdef HAVE_OPENCV_HIGHGUI#include "opencv2/highgui.hpp"#endif#ifdef HAVE_OPENCV_IMGCODECS#include "opencv2/imgcodecs.hpp"#endif#ifdef HAVE_OPENCV_IMGPROC#include "opencv2/imgproc.hpp"#endif#ifdef HAVE_OPENCV_ML#include "opencv2/ml.hpp"#endif#ifdef HAVE_OPENCV_OBJDETECT#include "opencv2/objdetect.hpp"#endif#ifdef HAVE_OPENCV_PHOTO#include "opencv2/photo.hpp"#endif#ifdef HAVE_OPENCV_STITCHING#include "opencv2/stitching.hpp"#endif#ifdef HAVE_OPENCV_VIDEO#include "opencv2/video.hpp"#endif#ifdef HAVE_OPENCV_VIDEOIO#include "opencv2/videoio.hpp"#endif#endif

如果读者对OpenCV结构比较熟悉,在使用时可以只包含对应的某个模块,如图像滤波功能调用可以只包含"opencv2/imgproc.hpp"头文件,在后续章节讲解每个模块时,都会讲解包含该模块对应的头文件,导读内容可以查看当前模块暴露的算法函数。

【学习OpenCV4】案例1:Windows OpenCV C++语言开发环境搭建相关推荐

  1. 【学习OpenCV4】案例3:OpenCV Python语言开发环境搭建

    本书分享内容来自图书学习OpenCV 4:基于Python的算法实战>,该书刚刚上市,是国内第一本系统讲解OpenCV4各个模块的图书,配套案例深入浅出的讲解.第一章有在各个平台搭建环境的介绍, ...

  2. AliOS Things物联网操作系统学习第一步:Windows下AliOS Things开发环境搭建

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 人工智能编程入门博客 之前如果想要使用AliOS Things开发ESP8266模块的固件,开发环境 ...

  3. 最新Windows下Go语言开发环境搭建+GoLand配置

    一.下载Go语言开发包 大家可以在Go语言官网(https://golang.google.cn/dl/)下载 Windows 系统下的Go语言开发包,如下图所示. 这里我们下载的是 64 位的开发包 ...

  4. 轻松玩转树莓派Pico之三、Windows+Ubuntu虚拟机模式下VSCode C语言开发环境搭建

    目录 1.VSCode下载与安装 2.VSCode基础插件安装 3.SSH连接与配置 4.SSH免密登录 5.Pico编译 工欲善其事,必先利其器.之前的介绍的Pico流程都是通过命令行编译,没有进行 ...

  5. win10 C语言开发环境搭建

    win10 C语言开发环境搭建 一.编辑器的选择 二.windows10下的开发环境 方法一: 1.下载msys64 2.更新安装包,下载mingw64 gcc编译器 3.打开clion编辑器,配置m ...

  6. 第1章 Window下VSCode的C语言开发环境搭建 (一)

    文章目录 文档视频讲解链接地址 第01章 开发环境搭建 1.1 C语言开发环境搭建 1. 常用的C语言开发环境介绍 VC++ 6.0 VS 2019 Clion DevC++ vim编辑 VSCode ...

  7. 【链块技术10期】区块链基础语言(二)——GO语言开发环境搭建

    ‍原文链接:区块链基础语言(二)--Go语言开发环境搭建 一.操作系统位数的查询方法‍ 在安装前首先要了解个人的电脑系统位数是32位还是64位. 1.1Windows系统查询方法 右击"计算 ...

  8. 1 Go语言开发环境搭建详细教程+go常见bug合集【Go语言教程】

    Go语言开发环境搭建[Win.Linux.Mac] 1 SDK下载 官网地址:golang.org,因为一些原因国内可能无法访问.可以使用下面第二个链接. 国内地址访问:https://golang. ...

  9. ④ESP8266 开发学习笔记_By_GYC 【Ubuntu系统下ESP8266 开发环境搭建】

    目录 ④ESP8266 开发学习笔记_By_GYC [Ubuntu系统下ESP8266 开发环境搭建] 一.安装前准备 1.乐鑫官方的ESP-IDF 编程指南 2.ESP-IDF风格的ESP8266 ...

最新文章

  1. PHP、Python 竟上榜最慢的现代编程语言
  2. 在MSN、QQ群、论坛上提问的决窍
  3. Spring Boot异常
  4. UA OPTI570 量子力学21 Atom Trapping
  5. Web前端面试指导(十八):用纯CSS创建一个三角形的原理是什么?
  6. 64位centOS5.4系统安装memcached
  7. discuz仿文明争霸游戏官网模版
  8. Vue cli3使用vue-awesome-swiper
  9. Atitit 数据库的历史与未来 目录 1.1. 两个对于数据库强需求的行业。电信 金融 1 1.2. 艾提拉分析 对数据库强需求行业金融 1 2. 数据库历史 2 2.1. ,上个世纪50,6
  10. .md文件用什么软件打开
  11. Python 安卓群控随机修改机型
  12. 原生ajax响应json数据
  13. DotNetBar控件的多文档界面的实现
  14. 开机出现invalid boot.ini filebooting from c:\windows\ntdetect failed 修复方法
  15. 入门GTD时间管理系统必读(链接必读--很完整的一个GTD系统)
  16. 03 day2--javascript笔记pink老师--对象
  17. Java实现快递管理系统一(views)
  18. 软件工程--面向对象的分析和设计方法
  19. Tushare(介绍)
  20. 简简单单玩转CSS3(1)

热门文章

  1. 疫情可视化part3
  2. Redis分布式算法原理(重点)
  3. 交易订单处理失败,请稍后再试(ali64)
  4. android 系统光标,如何定位android系统中光标的位置
  5. (附源码)计算机毕业设计Java二次元文化网站
  6. 支持html5安卓手机浏览器,百度手机浏览器强劲内核 完美支持HTML5
  7. 在腾讯云中配置服务器外网可以访问
  8. Pivotal中国研发中心总经理冯雷受邀参加2017金融证券行业大数据高峰论坛
  9. 高考失利后,属于我的大学本科
  10. import mysql.connector 报错