zoukankan      html  css  js  c++  java
  • Mat数据结构

    1.MAT类:

    OpenCV从2001年开始发展,在最初使用的是c语言,使用的是IplImage数据结构来存储图像,但是最大的问题需要手动申请释放内从( manual memory management),从OpenCV2.0开始,开始使用C++接口的Mat,这是自动分配和释放内存的(automatic memory management)。
    Mat有两部分组成

    • 头部:存储方式、图像大小等信息,头部的大小是一个常量(constant)
    • 数据块:图像像素的值(按行顺序存储)
    • NOTE1:大部分拷贝Mat,如拷贝构造、赋值操作,只是拷贝头部信息,他们指向同一个数据块,不同对象对其做操作,会影响到其他对象。如果想进行深拷贝用
      cv::Mat::copyTo 和cv::Mat::clone 方法
    • NOTE2:多个头部指向同一个Matrix,那么谁来对其进行销毁:最后一个使用的对象,OpenCV内部有引用的计数机制 (reference counting mechanism),当增加一个对象(只复制一个头部指向Matrix)counter+1;如果一个对象销毁,counter-1。最后一个对象对Matrix进行回收。
    Mat F = A.clone();
    Mat G;
    A.copyTo(G);
    

    2.储存方式:

    • 彩色RGB,注意OpenCV存储顺序是BGR
    • HSV(色调、饱和度和值) and HLS(色调、亮度和饱和度):(hue, saturation and value/luminance)
    • YCrCb:JPEG格式使用
    • CIELab:测量颜色和颜色之间的距离时使用方便

    3.结构类型:

    [官方Mat类]:https://docs.opencv.org/4.0.0/d3/d63/classcv_1_1Mat.html#afbf34be80b7443123b2a032a67c3c4e3)

    • 点:

    • 向量:

    • Mat图像通道:

  • 相关阅读:
    截屏 多难未遂
    捕捉异常
    Android中缓存记忆
    Android中的线程池
    悄悄为Android中解决部分适配问题哦!
    java中的服务端跳转与客户端跳转区别与联系
    doget(),doput()方法的使用
    基本概念--同步,异步
    java--SimpleDataFormat类
    java--9
  • 原文地址:https://www.cnblogs.com/penuel/p/13155765.html
Copyright © 2011-2022 走看看