zoukankan      html  css  js  c++  java
  • OpenCV3编程入门笔记(一)

    ---恢复内容开始---

      图像处理技术一般包括图像压缩,增强和复原,匹配、描述和识别3个部分。图像处理和计算机视觉的区别在于:图像处理侧重于“处理”图像——如增强、还原、去噪、分割等;而计算机视觉重点在于使用计算机来模拟人的视觉。

      OpenCV由一系列C函数和C++类构成,拥有包括500多个C函数的跨平台的中高层API。OpenCV还提供MLL机器学习库,该机器学习库主要用于统计方面的模式识别和聚类。OpenCV可用于解决如下领域的问题:人机交互、物体识别、图像分区、人脸识别、动作识别、运动跟踪、机器人。

      OpenCV基本架构分析:...\opencv\build\include目录,其中有opencv和opencv2。opencv文件夹包含旧版的头文件,而opencv2包含着新版opencv2系列的头文件。

      OpenCV所有模块:

    (1)【calib3d】——该模块主要是相机校准和三维重建相关的内容,包括基本的多视角几何算法、单个立体摄像头标定、物体姿态估计、立体相似性算法、3D信息的重建等。

    (2)【contrib】——该模块新增了新型人脸识别、立体匹配、人工视网膜模型等技术。

    (3)【core】——核心功能模块,包含OpenCV基本数据结构、动态数据结构、绘图函数、数组操作相关函数、辅助功能与系统函数和宏、与OpenGL的互操作。

    (4)【imgproc】——图形处理模块,包含线性和非线性的图像滤波、图像的几何变换、其他图像转换、直方图相关、结构分析和形状描述、运动分析和形状描述、运动分析和对象跟踪、特征检测、目标检测等内容

    (5)【features2d】——2D功能框架,包含特征检测和描述、特征检测器通用接口、描述符提取器通用接口、描述符匹配器通用接口、通用描述符匹配器通用接口、关键点绘制函数和匹配功能绘制函数

    (6)【flann】——高维的近似近邻快速搜索算法库,包含快速近邻最近邻搜索、聚类

    (7)【GPU】——运用GPU加速的计算机视觉模块

    (8)【highgui】——高层GUI图形用户界面,包含媒体的输入输出、视频捕捉、图像和视频的编码解码、图形交互界面的接口等

    (9)【legacy】——一些已经废弃的代码库,保留下来作为向下兼容,包含运动分析、期望最大化、直方图、平面细分、特征检测和描述、描述符提取器的通用接口、通用描述符的常用接口、匹配器

    (10)【ml】——机器学习模块,基本上是统计模型和分类算法,包含统计模型、一般贝叶斯分类器、K-近邻、支持向量机、决策树、提升、梯度提高树、随机数、超随机数、期望最大化、神经网络、MLData

    (11)【nonfee】——一些具有专利的算法模块,包含特征检测和GPU相关的内容。

    (12)【objdetect】——目标检测模块,包含Cascade Classification(级联分类)和Latent SVM两部分。

    (13)【ocl】——运用OpenCL加速的计算机视觉组件模块

    (14)【photo】——包含图像修复和图像去噪两部分

    (15)【stitching】——图像拼接模块,包含拼接流水线、特点寻找和匹配图像、估计旋转、自动校准、图片歪斜、接缝估测、曝光补偿、图片混合

    (16)【superres】——超分辨率技术的相关模块

    (17)【ts】——OpenCV测试相关代码

    (18)【video】——视频分析组件,该模块包括运动估计、背景分离、对象跟踪等视频处理相关内容

    (19)【Videostab】——视频稳定相关组件

      opencv.hpp中包含了OpenCV各模块的头文件,故编写程序时,可写上“#include<opencv2/opencv.hpp>”即可。

      argc与argv参数:arg指的是“参数”,其中,argc为整数,用来统计运行程序时送给main函数的命令行参数的个数;*argv[]:为字符串数组,用来存放指向字符串参数的指针数组,每一个元素指向一个参数。

      int argc表示命令行字串的个数;

      char *argv[]表示命令行参数的字符串。

    以下是参考 http://blog.sina.com.cn/s/blog_6a0e04380100r289.html 深度和通道的理解

    矩阵数据类型:

    –      CV_<bit_depth>(S|U|F)C<number_of_channels>

    S = 符号整型  U = 无符号整型  F = 浮点型

    E.g.:

    CV_8UC1 是指一个8位无符号整型单通道矩阵,

    CV_32FC2是指一个32位浮点型双通道矩阵

    CV_8UC1           CV_8SC1          CV_16U C1       CV_16SC1 
    CV_8UC2           CV_8SC2          CV_16UC2        CV_16SC2 
    CV_8UC3           CV_8SC3          CV_16UC3        CV_16SC3 
    CV_8UC4           CV_8SC4          CV_16UC4        CV_16SC4 
    CV_32SC1         CV_32FC1         CV_64FC1
    CV_32SC2         CV_32FC2         CV_64FC2
    CV_32SC3         CV_32FC3         CV_64FC3
    CV_32SC4         CV_32FC4         CV_64FC4

    其中,通道表示每个点能存放多少个数,类似于RGB彩色图中的每个像素点有三个值,即三通道的。

    图片中的深度表示每个值由多少位来存储,是一个精度问题,一般图片是8bit(位)的,则深度是8.

  • 相关阅读:
    [Hibernate]
    asc.desc
    Could not obtain connection metadata
    java枚举类Enum方法简介(valueof,value,ordinal)
    maven3 手动安装本地jar到仓库
    maven命令大全
    如何正确遍历删除List中的元素,你会吗?
    Hibernate的session.createSQLQuery的几种查询方式
    Linux-github 搭建静态博客
    我所写的CNN框架 VS caffe
  • 原文地址:https://www.cnblogs.com/shuimuqingyang/p/9865029.html
Copyright © 2011-2022 走看看