在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上的编译任务完成!

相关推荐
兵慌码乱10 天前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析
python·opencv·计算机视觉·人机交互·手势识别·mediapipe·pyside2
梦想三三14 天前
OpenCV银行卡数字识别项目(图像预处理与字符分割)
人工智能·opencv·计算机视觉
武子康14 天前
调查研究-180 roboflow/supervision:计算机视觉工程里的“胶水层“,为什么值得关注?
人工智能·opencv·计算机视觉·chatgpt·llm·向量化
m沐沐14 天前
【计算机视觉】OpenCV 模板匹配银行卡数字识别---下
人工智能·python·opencv·计算机视觉·pycharm·numpy
fie888915 天前
SSR / MSR 图像增强
人工智能·opencv·计算机视觉
sali-tec15 天前
C# 基于OpenCv的视觉工作流-章85-包胶不良检测
图像处理·人工智能·opencv·算法·计算机视觉
FL162386312915 天前
[cmake]基于C++使用纯opencv部署ppocrv5v6的onnx模型
开发语言·c++·opencv
2401_8856651915 天前
基于OpenCV的模板匹配OCR实战:银行卡与身份证数字识别完整教程
人工智能·python·opencv·计算机视觉·ocr
winfredzhang16 天前
用 MediaPipe 手势数字识别一键打开下载夹里的图片(Python + OpenCV 实战)
人工智能·python·opencv·google·mediapipe
sali-tec16 天前
C# 基于OpenCv的视觉工作流-章84-包胶有无检测
图像处理·人工智能·opencv·算法·计算机视觉