小工具知识网

当前位置: 首页 > 行业知识 > OpenCV实战(1)——OpenCV与图像处理基础

行业知识

OpenCV实战(1)——OpenCV与图像处理基础

2026-11-12 21:14:52 来源:互联网转载

OpenCV实战(1)——OpenCV与图像处理基础

    • 0. 前言
    • 1. OpenCV 基础
      • 1.1 安装 OpenCV
      • 1.2 OpenCV 主要模块
      • 1.3 使用 Qt 进行 OpenCV 开发
      • 2. OpenCV 图像处理基础
        • 2.1 加载、显示和保存图像
        • 2.2 OpenCV 命名空间
        • 2.3 cv::imread() 函数详解
        • 2.4 OpenCV 应用程序的编译执行
        • 3. OpenCV 鼠标事件
        • 4. OpenCV 绘制图形
        • 5. 使用 Qt 运行 OpenCV 应用程序
        • 小结
        • ���列链接

          0. 前言

          OpenCV 是一个的跨平台计算机视觉库,包含了 500 多个用于图像和视频分析的高效算法。本节将介绍 OpenCV 的基础知识,以及如何编译运行 OpenCV 程序,并将学习如何完成最基本的图像处理任务——读取、显示和保存图像。除此之外,鼠标事件和图形绘制也是 OpenCV 计算机视觉项目中常用的基本功能(例如图像标注场景,利用鼠标事件在图像中绘制目标对象的边界框),本节介绍了如何使用这两个重要的 OpenCV 功能。

          1. OpenCV 基础

          1.1 安装 OpenCV

          OpenCV 是一个开源库,可以用于开发在 Windows、Linux、Android 和 macOS 等平台上运行的计算机视觉应用程序。自 1999 年推出以来,它已成为计算机视觉领域广泛采用的主要开发工具。在 OpenCV 网站,根据所用计算机的不同平台( Unix/Windows 或 Android) 下载相对应的 OpenCV 包,关于不同平台 OpenCV 的安装方式可以参考官方指南或相关博客。

          1.2 OpenCV 主要模块

          从 OpenCV 2.2 版开始,OpenCV 库被分成了多个模块,这些模块是位于 lib 目录中的内置库文件,一些常用的模块如下:

          • core 模块包含 OpenCV 库的核心函数,主要包括基本数据结构和算术函数
          • imgproc 模块包含主要的图像处理函数
          • highgui 模块包含图像和视频读写函数以及一些用户界面函数
          • features2d 模块包含特征点检测器和描述符以及特征点匹配框架
          • calib3d 模块包含相机校准、视图几何估计和立体函数
          • video 模块包含运动估计、特征跟踪和前景提取函数和类
          • objdetect 模块包含人脸检测和人物检测等目标检测函数

            OpenCV 还包括许多其他实用模块,例如机器学习函数 (ml)、计算几何算法 (flann)等;除此之外,还包括其他实现更高级函数的专用库,例如,用于计算摄影的 photo 和用于图像拼接算法的 stitching。

            所有这些模块都有一个与之关联的头文件,因此,典型的 OpenCV C++ 代码首先应当声明引入所需的模块,例如,建议的声明样式类似于以下代码:

            #include #include #include 

            有时,我们也可能会看到以以下命令开头的 OpenCV 代码,这是由于为了与旧定义兼容而使用了旧样式:

            #include "cv.h"

            1.3 使用 Qt 进行 OpenCV 开发

            Qt 是作为开源项目开发的 C++ 应用程序的跨平台 IDE。它由两个独立的元素组成——一个名为 Qt Creator 的跨平台 IDE,以及一组 Qt 类和开发工具。使用 Qt 开发 C++ 应用程序有以下优点:

            • 它是一个由 Qt 社区开发的开源计划,可以访问不同 Qt 组件的源代码
            • 它是一个跨平台的 IDE,可以开发能够运行在不同操作系统上的应用程序,例如 Windows、Linux、macOS 等
            • 它包含一个完整的跨平台 GUI 库,遵循面向对象和事件驱动模型
            • Qt 还包括多个跨平台库,可用于开发多媒体、数据库、多线程、Web 应用程序以及其他高级应用程序

              使用 Qt 可以很方便的编译 OpenCV 库,因为它可以读取 CMake 文件。一旦安装了 OpenCV 和 CMake,只需从 Qt 的 File 菜单中选择 Open File or Project...,然后打开 OpenCV 的源目录下的 CMakeLists.txt 文件,然后在弹出窗口中单击 configure project:

              创建一个 OpenCV 项目后,可以通过单击 Qt 菜单中的 Build Project 来构建该项目:

              2. OpenCV 图像处理基础

              一切准备就绪,接下来是运行第一个 OpenCV 应用程序的时候了。由于 OpenCV 的核心就是处理图像,因此我们首先学习如何执行图像应用程序所需的最基本操作,即从文件系统中加载输入图像、在窗口中显示图像、应用处理函数以及将输出图像存储在磁盘上。

              2.1 加载、显示和保存图像

              创建新文件 hello_opencv.cpp,包含头文件,声明将使用的类和函数。由于,本节我们只需要显示一个图像,所以需要声明图像数据结构的 core 头文件和包含所有图形界面功能的 highgui 头文件:

              #include #include 
              2.1.1 加载图像

              在 mian 函数中首先声明一个保存图像的变量,定义一个 cv::Mat 类对象:

              cv::Mat image; // 创建一个空图像

              根据此定义将创建一个大小为 0 x 0 的图像,可以通过访问 cv::Mat size 属性来确认图像尺寸:

              std::cout  // 异常处理    return 0; }    cv::Mat image; // 创建一个空图像    std::cout  // 异常处理        std::cout     cv::Mat *im = reinterpret_castcase cv::EVENT_LBUTTONDOWN:        // 打印坐标为 (x, y) 处的像素坐标        std::cout cv::Mat *im= reinterpret_cast// dispatch the eventcase cv::EVENT_LBUTTONDOWN: // mouse button down event// display pixel value at (x,y)std::cout cv::Mat image; // 异常处理std::cout   // error handlingstd::cout cv::Mat image; // create an empty imagestd::cout   INCLUDEPATH += /home/brainiac/Program/opencv4/include/opencv4  LIBS += -L/home/brainiac/Program/opencv4/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_imgcodecs}WIN32 {  INCLUDEPATH += C:/OpenCV4.6.0/build/include/opencv4  LIBS += -lc:/OpenCV4.6.0/build/lib/ -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_imgcodecs}# 源文件SOURCES += draw_on_image.cpp

上一篇:如何下载哔哩哔哩视频教程

下一篇:租用服务器怎么做防护服务?