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

相关推荐
R-G-B1 天前
【15】OpenCV C++实战篇——fitEllipse椭圆拟合、 Ellipse()画椭圆
c++·人工智能·opencv·fitellipse椭圆拟合·ellipse画椭圆·椭圆拟合·绘制椭圆
lll482331 天前
opencv颜色识别项目:识别水果
人工智能·opencv·计算机视觉
yanxing.D2 天前
OpenCV轻松入门_面向python(第三章图像运算)
人工智能·python·opencv
AI technophile2 天前
OpenCV计算机视觉实战(19)——特征描述符详解
人工智能·opencv·计算机视觉
R-G-B3 天前
【04】OpenCV C++实战篇——实战:发票精准定位,提取指定单元格数据。(倾角计算、旋转矫正、产品定位、目标定位、OCR文字提取)
c++·opencv·ocr·发票精准定位·提取指定单元格数据·倾角计算·旋转矫正
乔公子搬砖3 天前
计算机视觉全景指南:从OpenCV预处理到YOLOv8实战,解锁多模态AI时代(第五章)
人工智能·opencv·计算机视觉·ai·语言模型·大模型
Jason_zhao_MR4 天前
如何板端编译OpenCV并搭建应用--基于瑞芯微米尔RK3576开发板
人工智能·嵌入式硬件·mcu·opencv·物联网·计算机视觉·嵌入式
新手村领路人4 天前
c++ opencv调用yolo onnx文件
c++·opencv·yolo
张登杰踩4 天前
OpenCV cv2.flip() 函数详解与示例
人工智能·opencv·计算机视觉
luofeiju4 天前
OpenCV图像裁剪与 ROI 操作
opencv