《OpenCV图像处理》——1.4 使用OpenCV创建用户项目

简介:

本节书摘来自华章计算机《OpenCV图像处理》一书中的第1章,第1.4节,作者:[西]葛罗瑞亚·布埃诺·加西亚(Gloria Bueno García)著,更多章节内容可以访问云栖社区“华章计算机”公众号查看

1.4 使用OpenCV创建用户项目

本书中,我们假定C++是图像处理应用编程的主要语言,尽管实际上也提供了其他编程语言的接口和封装器(例如,Python、Java、MATLAB/Octave等)。
本节说明如何用OpenCV的C++ API(一种易用的跨平台框架)开发应用。
1.4.1 库的一般使用方法
为了用C++开发一个OpenCV应用,需要在代码中:
包含OpenCV的头文件定义
链接OpenCV库(二进制文件),以获取最终的可执行文件
OpenCV头文件位于OPENCV_BUILDinstallincludeopencv2目录中,此处对于每个模块都有一个文件(*.hpp)。用#include指令包含头文件,如下所示:
screenshot

用这个指令,可以包含用户程序所需的每个头文件。另一方面,如果包含opencv.hpp头文件,那么所有的头文件都将被自动包含,如下所示:
screenshot

记住,本地安装的所有模块都在OPENCV_BUILDinstallincludeopencv2opencv_modules.hpp头文件中定义,并在OpenCV的构建过程中自动生成。
#include指令的使用并非总能保证对头文件的正确包含,因为告诉编译器在哪里能找到包含文件是有必要的。这一点可以通过传递具有文件位置的一个特殊参数来实现(例如,对于GNU编译器为I< location>)。
链接过程需要提供(动态或静态)链接库,在这里可以找到所需的OpenCV功能。这个过程通常用链接器的两种类型参数完成:库的位置(例如,GNU编译器的-L< location>)和库的名字(例如,-l< module_name>)。

1.4.2 开发新项目的工具
开发我们自己的OpenCV C++应用的主要先决条件是:
OpenCV头文件和库二进制文件:当然,我们需要编译OpenCV,并且对这样一个编译,辅助库是先决条件。该代码包应该使用与生成用户应用程序相同的编译器来编译。
一个C++编译器:一些关联工具用作代码编辑器、调试器、项目管理器、构建过程管理器(build process manager)(例如,CMake)、修订控制系统(revision control system)(例如,Git、Mercurial、SVN等)、类检测器(class inspector)等是方便的。通常,这些工具在一个集成开发环境(Integrated Development Environment,IDE)中一起进行配置。
任何其他辅助库:有时编写最终应用程序所需的任何其他辅助库,例如绘图、统计等,可能是需要的。
对于编写OpenCV C++应用,最流行的可用编译工具包是:
Microsoft Visual C(MSVC):只在Windows上支持,与IDE Visual Studio集成得很好,当然也可以与其他跨平台的IDE集成,例如,Qt生成器或Eclipse。与目前最新的OpenCV发布兼容的MSVC版本是VC 10、VC 11和VC 12(Visual Studio 2010、2012和2013)。
GNU Compiler Collection GNU GCC:这是由GNU项目开发的一个跨平台的编译器系统。对于Windows来说,该工具包就是众所周知的MinGW(最小的GNU GCC)。与目前OpenCV发布兼容的版本是GNU GCC 4.8。该工具包可以和若干IDE一起使用,例如,Qt生成器、Code::Blocks、Eclipse等。
对于本书提供的示例,我们为Windows+Qt 5.2.1库和Qt生成器IDE(3.0.1)使用MinGW 4.8编译工具包。编译OpenCV需要跨平台Qt库所提供的新UI功能。

Qt生成器是一个针对C++的跨平台IDE,它集成了我们编写应用时所需的工具。在Windows中,可以使用MinGW或MSVC。图1-3展示了对于一个OpenCV C++项目具有不同的面板和视图的Qt生成器的主窗口:

screenshot

1.4.3 使用Qt生成器创建OpenCV C++程序
接下来,我们说明如何用Qt生成器的IDE创建代码项目。特别地,我们将这个描述应用到一个OpenCV示例上。
使用Qt生成器,可以为任意OpenCV应用程序创建项目。要做到这一点,需要导航到File | New File or File | Project,然后导航到Non-Qt Project | Plain C++ Project。之后,必须选择一个项目名字和将要存储的位置。再下一步,为该项目(在该示例中,台式机为Qt 5.2.1 MinGW 32位)选择一个工具包(即编译器),并为生成的二进制文件定位。通常,使用两种可能的方法构建配置(配置文件):debug和release。这些配置文件设置合适的标志(f?lag)来构建和运行二进制文件。
使用Qt生成器创建一个项目时,生成两个特殊文件(具有.pro和.pro.user扩展名)来配置构建和运行过程。该构建过程是通过项目创建期间所选择的工具包确定的。对于Qt 5.2.1 MinGW 32位包,这个过程则依赖于qmake和mingw32-make工具。使用*.pro文件作为输入,qmake会为驱动每个配置文件(即,release和debug)的构建过程,产生该生成文件。在Qt生成器IDE中使用qmake工具替代CMake,可简化软件项目的构建过程。只需几行信息,即可自动产生生成文件。
以下代码行表示一个*.pro文件的示例(例如,showImage.pro):
screenshot

上面的文件说明qmake所需的选项,以便为项目构建二进制代码产生合适的生成文件。以一个标签开始的每一行,指定一个选项(TARGET、CONFIG、SOURCES、INCLUDEPATH和LIBS),后跟一个标志来添加(+=)或删除(-=)该选项的值。在这个示例项目中,使用非Qt控制台应用。可执行文件是showImage.exe(TARGET)和源文件showImage.cpp(SOURCES)。因为这个项目是一个基于OpenCV的应用,所以后两个标签指定头文件的位置(INCLUDEPATH)以及由这个特定项目(core、imgcodecs、highgui和imgproc)所使用的OpenCV库(LIBS)。注意,行尾的反斜线表示续行。

相关文章
|
算法 计算机视觉
基于qt的opencv实时图像处理框架FastCvLearn实战
本文介绍了一个基于Qt的OpenCV实时图像处理框架FastCvLearn,通过手撕代码的方式详细讲解了如何实现实时人脸马赛克等功能,并提供了结果展示和基础知识回顾。
600 7
基于qt的opencv实时图像处理框架FastCvLearn实战
|
10月前
|
人工智能 算法 计算机视觉
【01】opencv项目实践第一步opencv是什么-opencv项目实践-opencv完整入门以及项目实践介绍-opencv以土壤和水滴分离的项目实践-人工智能AI项目优雅草卓伊凡
【01】opencv项目实践第一步opencv是什么-opencv项目实践-opencv完整入门以及项目实践介绍-opencv以土壤和水滴分离的项目实践-人工智能AI项目优雅草卓伊凡
362 63
【01】opencv项目实践第一步opencv是什么-opencv项目实践-opencv完整入门以及项目实践介绍-opencv以土壤和水滴分离的项目实践-人工智能AI项目优雅草卓伊凡
|
机器学习/深度学习 算法 计算机视觉
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
390 7
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
2364 3
WK
|
计算机视觉 Python
如何使用OpenCV进行基本图像处理
使用OpenCV进行基本图像处理包括安装OpenCV,读取与显示图像,转换图像颜色空间(如从BGR到RGB),调整图像大小,裁剪特定区域,旋转图像,以及应用图像滤镜如高斯模糊等效果。这些基础操作是进行更复杂图像处理任务的前提。OpenCV还支持特征检测、图像分割及对象识别等高级功能。
WK
208 4
yolov5项目如何安装pycocotools和opencv-python?
本文提供了解决yolov5项目中安装pycocotools和opencv-python包失败的两种方法:手动安装或使用国内镜像源进行安装。
yolov5项目如何安装pycocotools和opencv-python?
|
人工智能 计算机视觉 Python
【OpenCV】计算机视觉图像处理基础知识(上)
【OpenCV】计算机视觉图像处理基础知识(上)
223 7
|
算法 计算机视觉
【OpenCV】计算机视觉图像处理基础知识(下)
【OpenCV】计算机视觉图像处理基础知识(下)
234 5
|
机器学习/深度学习 人工智能 计算机视觉
好的资源-----打卡机+Arm+Qt+OpenCV嵌入式项目-基于人脸识别的考勤系统-----B站神经网络与深度学习,商城
好的资源-----打卡机+Arm+Qt+OpenCV嵌入式项目-基于人脸识别的考勤系统-----B站神经网络与深度学习,商城
|
机器学习/深度学习 算法 Linux
使用OpenCV在Python中进行图像处理
使用OpenCV在Python中进行图像处理