在Windows上用Visual Studio编译OpenCV

在Windows上编译开源项目,有时候让人痛不欲生,有时候却出奇地顺利。OpenCV属于后者。本文记录这次愉快的过程。

注:OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它提供了大量的函数和算法(官网上说有2500个算法),用于处理图像和视频。这些功能涵盖了从图像的读取、写入和基本处理(如裁剪、旋转、缩放),到复杂的对象检测、人脸识别、图像分割等高级任务。OpenCV在自动驾驶、医疗诊断、安防监控等众多领域都发挥着重要作用。

以下是完整的五个步骤:

  1. 前提:本人的电脑是Windows 10,已经安装了Visual Studio 2019。你也可以去微软官网下载VS 2022社区版,个人是可以免费使用的哦。
  2. 下载CMake工具。OpenCV使用CMake做配置管理。建议到cmake.org官网下载工具的最新版,选择"Windows x64 ZIP"即可,下载完了在本地解压,可以直接使用。
  3. 从GitHub下载OpenCV源代码:git clone https://github.com/opencv/opencv.git
  4. 通过CMake生成编译工程。首先,运行cmake-gui.exe:

然后,顺序执行以下5个步骤(假设OpenCV源代码位于D:\Dev\GitHub\opencv目录下):

  • 点击"Browse Source"按钮,指定OpenCV源代码的位置,这里有一个关键的CMakeLists.txt文件;
  • 点击"Browse Build"按钮,指定编译生成的文件路径,建议在opencv目录下新建一个build文件夹;
  • 点击"Configure"按钮进行配置,这个过程比较耗时(大约300秒),上图中红色部分是各种配置选项,具体释义参见官方文档
  • 点击"Generate"按钮,即生成了所有必要的Visual Studio工程;
  • 点击"Open Project"按钮,即可用Visual Studio打开build目录下的OpenCV.sln。
  1. 编译OpenCV源码,并尝试运行第一个程序。在Visual Studio里看起来是这样的:

我们可以来试试applications文件夹下的opencv annotation这个程序,它的功能是:遍历并依次显示指定目录下的图像文件,允许用户在图像上框选矩形区域,并把这些区域坐标保存到一个本地文件中。

先准备测试素材吧。在D盘创建一个testimages文件夹,再在其中放几个图像文件。然后在Visual Studio中将opencv annotation"设为启动项目",再对这个项目执行"生成",真的是一气呵成,编译通过 o(* ̄▽ ̄*)ブ

在让程序运行起来之前,还需要给它设置命令行参数,如:-a=D:\opencv_out.txt -i=D:\testimages\。参见opencv annotation项目的属性窗口:

程序运行起来像这样:

操作方法:在图片上按下鼠标并拖动,可以框选一个区域,然后在键盘上按下C键就可以确认这个区域,接着鼠标就能继续选择更多的区域;按下D键可以删除最近一个区域;按下N键可以切换到下一个图像。程序退出后,还可以打开D:\opencv_out.txt文件看一下具体的输出内容。

至此,OpenCV在Windows上的编译任务完成!

相关推荐
菜狗woc3 小时前
opencv-python的简单练习
人工智能·python·opencv
西猫雷婶5 小时前
python学opencv|读取图像(十四)BGR图像和HSV图像通道拆分
开发语言·python·opencv
云空6 小时前
《QT 5.14.1 搭建 opencv 环境全攻略》
开发语言·qt·opencv
编码小哥6 小时前
opencv中的色彩空间
opencv·计算机视觉
吃个糖糖6 小时前
34 Opencv 自定义角点检测
人工智能·opencv·计算机视觉
花花少年6 小时前
【Windows版】opencv 和opencv_contrib配置
opencv·opencv_contrib
YRr YRr6 小时前
解决Ubuntu 20.04上编译OpenCV 3.2时遇到的stdlib.h缺失错误
linux·opencv·ubuntu
葡萄爱8 小时前
OpenCV图像分割
人工智能·opencv·计算机视觉
编码小哥10 小时前
通过opencv加载、保存视频
人工智能·opencv
发呆小天才O.oᯅ10 小时前
YOLOv8目标检测——详细记录使用OpenCV的DNN模块进行推理部署C++实现
c++·图像处理·人工智能·opencv·yolo·目标检测·dnn