• opencv(2)数据结构


    opencv的基础结构在cxcore文件中,主要结构有:

    opencv主要结构
    1~7的定如下:
    opencv基本数据 

    1.类型的初始化话方法:

    ipl数据结构
    opencv主要结构

    可以用于多通道矩阵,如果使用的图像是1通道的,则pt.val[0]中存储数据 ,如果使用的图像是3通道的,则pt.val[0],pt.val[1],pt.val[2]中存储数据。

    2.

    CvArr,它只是一个Interface,在"cxtype.h"被定义为 typedef void CvArr;用于指示函数接收的数组类型可以不止一个,如 IplImage*, CvMat* 甚至 CvSeq*. 最终的数组类型是在运行时通过分析数组头的前4 个字节判断。 opencv数据类型的继承关系(很类似C++):

    image

    3.矩阵类型CvMat

    CvMat结构

    内部使用了union的共用体,也就是说访问的时候可以使用里面的任何一种,尤其是data分为不同的数据类型,访问的时候是需要注意的。

    矩阵操作

    CvMat操作

    矩阵访问(链接可以参考更全的),如果对于单个元素的访问,使用指针式最好的办法,如果是访问整行或者整列,或者是多通道数据的访问,使用opencv提供的函数,更为快捷一些:

    CvMat访问函数

    对于特殊矩阵的访问,这里没做介绍,我本人用的比较少

    3.图像类型 IplImage

    ipl数据结构

    里面比较关键的变量:

    nChannels: 1 2 3,黑白为1通道,24位彩色图像为3通道
    
    depth:一般是IPL_DEPTH_8U,如果需要做精确处理,可以将图像转换为浮点矩阵,处理完在转换回来
    
    origin (只控制显示的方式,并不改变里面数据的保存方式)
    
    width,height
    
    roi:需要使用ROI是使用
    
    imageData:需要注意的是char类型指针,在访问的时候要注意转换为uchar类型
    
    widthStep  也就是行对齐后的量,比如说bmp图像,行必须是4的整倍数
    
    图像的基本操作
    ipl数据结构

    对于子图像的操作,一方面可以讲图像装换为矩阵,然后通过矩阵的相关函数来操作,转换可以这样做:
    ipl数据结构


    也可以通过ROI来进行操作:

     先说这么多吧,虽然话费这么长时间来整理,也蛮好费时间的,不过收获有的,后面主要对图像处理的过程进行说明

     

    转载请注明地址:http://www.cnblogs.com/zsb517/admin/EditPosts.aspx?postid=2533546
    作者:深夜孤灯


  • 相关阅读:
    Python 递归
    Python 面向过程编程
    Python 协程函数
    Python-第三方库requests详解
    Python 三元表达式
    linux copy
    centos 安装软件
    mysql 权限
    mysql 权限 备份
    android 开发
  • 原文地址:https://www.cnblogs.com/zsb517/p/2533546.html
Copyright © 2020-2023  润新知