【OpenCV3编程入门学习笔记】——第1章 邂逅OpenCV

邂逅OpenCV

前言

笔记系列

参考书籍:OpenCV3编程入门

作者:毛星云

版权方:电子工业出版社

出版日期:2015-02

笔记仅供本人参考使用,不具备共通性

笔记中代码均是OpenCV+Qt的代码,并非用vs开发,请勿混淆

1.1 OpenCV周边概念认知

1.1.1 图像处理、计算机视觉与OpenCV

  • 图像处理

    • Image Processing
    • 计算机对图像进行分析,以达到所需结果的技术,又称影像处理
    • 该技术包括
      • 图像压缩、增强和复原
      • 图像匹配、描述
      • 图像识别
    • 一般指数字图像处理(Digital Image Processing)
      • 数字图像是一个大的二维数组
        • 数组元素称为像素
        • 数组值称为灰度
      • 处理是指对数字图像进行
        • 去除噪声
        • 增强
        • 复原
        • 分割
        • 提取特征
    • 侧重于“处理”图像
  • 计算机视觉

    • Computer Vision
    • 用设备代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理
    • 侧重于使用计算机来模拟人的视觉
  • OpenCV

    • Open Source Computer Vision Library

    • 一款基于开源发行的跨平台计算机视觉库

    • 实现了图像处理和计算机视觉发面的很多通用算法

1.1.2 OpenCV概述

  • Open Source Computer Vision Library
  • 开源计算机视觉库
  • 跨平台
  • 设计目标
    • 执行速度尽量快
    • 关注实时应用
  • 采用优化的C/C++代码编写
  • 能够多核处理
  • 提供MLL(Machine Learning Library)机器学习库

1.1.3 起源及发展

1.1.4 应用概述

  • 人机交互
  • 物体识别
  • 图像分区
  • 人脸识别
  • 动作识别
  • 运动跟踪
  • 机器人

1.2 OpenCV基本架构分析

初学OpenCV时,先了解一下OpenCV的整体模块架构,再重点学习和突破自己感兴趣的部分,就会有得心应手,一览众山小的学习体验

通过OpenCV安装路径下include目录里面头文件的分类存放,来略读一下它的庞杂组织架构

进入到...\opencv\build\include\opencv2目录

在这里插入图片描述

在该目录中,找到opencv_modules.hpp的hpp文件

该文件中存放的是OpenCV2中与新模块构造相关的说明代码:

/*
 *      ** File generated automatically, do not modify **
 *		**				文件自动生成,请勿修改				**
 *
 * This file defines the list of modules available in current build configuration
 *
 * 该文件定义了当前构建配置中可用的模块列表
 *
*/

// This definition means that OpenCV is built with enabled non-free code.
// 这个定义意味着OpenCV是用启用的非自由代码构建的
// For example, patented algorithms for non-profit/non-commercial use only.
// 例如,专利算法只能用于非营利/非商业用途。
/* #undef OPENCV_ENABLE_NONFREE */

#define HAVE_OPENCV_CALIB3D
#define HAVE_OPENCV_CORE
#define HAVE_OPENCV_DNN
#define HAVE_OPENCV_FEATURES2D
#define HAVE_OPENCV_FLANN
#define HAVE_OPENCV_GAPI
#define HAVE_OPENCV_HIGHGUI
#define HAVE_OPENCV_IMGCODECS
#define HAVE_OPENCV_IMGPROC
#define HAVE_OPENCV_ML
#define HAVE_OPENCV_OBJDETECT
#define HAVE_OPENCV_PHOTO
#define HAVE_OPENCV_STITCHING
#define HAVE_OPENCV_VIDEO
#define HAVE_OPENCV_VIDEOIO

如上,L17~L31就是OpenCV的所有模块,按照宏定义的顺序依次介绍

  • HAVE_OPENCV_CALIB3D ---- calib3d
    • Calibration(校准)和3D这两个词的组合缩写
    • 该模块主要是相机校准和三维重建相关的内容
    • 算法包括
      • 多视角几何算法
      • 单个立体摄像头标定
      • 物体姿态估计
      • 立体相似性算法
      • 3D信息的重建
      • ……
  • HAVE_OPENCV_CORE ---- core
    • 核心功能模块
    • 包含如下内容
      • OpenCV基本数据结构
      • 动态数据结构
      • 绘图函数
      • 数组操作相关函数
      • 辅助功能与系统函数和宏
      • 与OpenGL的互操作
  • HAVE_OPENCV_DNN ---- dnn
    • Deep Neural Network
    • 深层神经网络模块
    • 详细内容暂略
  • HAVE_OPENCV_FEATURES2D ---- features2d
    • 即Features2D
    • 2D功能框架
    • 包含内容如下
      • 特征检测和描述
      • 特征检测器通用接口
      • 描述符提取器通用接口
      • 描述符匹配器通用接口
      • 通用描述符匹配器通用接口
      • 关键点绘制函数和匹配功能绘制函数
  • HAVE_OPENCV_FLANN ---- flann
    • Fast Library for Approximate Nearest Neighbors
    • 高位的近似近邻快速搜索算法库
    • 包含内容如下
      • 快速近似最近邻搜索
      • 聚类
  • HAVE_OPENCV_GAPI ---- gapi
    • G-API(Graph API) - 超高效图像处理 pipeline 引擎已集成为opencv_gapi模块
    • 这是一个新的 API,允许在流水线级别上对图像处理/CV 算法进行卸载和优化。
    • 详细内容暂略
  • HAVE_OPENCV_HIGHGUI ---- highgui
    • 高层GUI图形用户界面
    • 包含媒体的输入输出、视频捕捉、图像和视频的编码解码、图形交互界面的接口等内容
  • HAVE_OPENCV_IMGCODECS
  • define HAVE_OPENCV_IMGPROC
  • HAVE_OPENCV_ML ---- ml
    • Machine Learning
    • 机器学习模块
    • 基本上是统计模型和分类算法
    • 包含如下内容:
      • 统计模型
      • 一般贝叶斯分类器
      • K-近邻
      • 支持向量机
      • 决策树
      • 提升
      • 梯度提高树
      • 随机树
      • 超随机树
      • 期望最大化
      • 神经网路
      • MLData
  • HAVE_OPENCV_OBJDETECTL ---- objectect
    • 目标检测模块
    • 包含Cascade Classification(级联分类)和Latent SVM两大部分
  • HAVE_OPENCV_PHOTO ---- photo
    • Computational Photography
    • 包含图像修复和图像去噪两部分
  • HAVE_OPENCV_STITCHING ---- stitching
    • images stitching
    • 图像拼接模块
    • 包含如下内容:
      • 拼接流水线
      • 特点寻找和匹配图像
      • 估计旋转
      • 自动校准
      • 图片歪斜
      • 接缝估测
      • 曝光补偿
      • 图片混合
  • HAVE_OPENCV_VIDEO ---- video
    • 视频分析组件
    • 包括运动估计、背景分离、对象跟踪等视频处理相关内容
  • HAVE_OPENCV_VIDEOIO ---- videoio
    • 视频输入输出组件
    • 主要是用来打开视频文件或者camera,输出对应文件/设备的流。

1.3 OpenCV3带来了什么

1.4 OpenCV的下载、安装与配置

此处主要提供Windows环境下Qt+Opencv的配置

转载文章:

Qt-OpenCV开发环境搭建(史上最详细)

拜小白教你Qt5.8.0+OpenCV3.2.0配

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值