⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cxcore reference manual.htm

📁 Opencv的中文参考指南
💻 HTM
📖 第 1 页 / 共 5 页
字号:
     ***************************************************************************************** --><!-- <hr><h2><a name="ch1_array_structs">Array structures</a></h2> -->
<HR>

<H3><A name=decl_CvMat>CvMat</A></H3>
<P class=Blurb>多通道矩阵</P><PRE>    typedef struct CvMat
    {
        int type; /* CvMat 标识 (CV_MAT_MAGIC_VAL), 元素类型和标记 */
        int step; /* 以字节为单位的行数据长度*/

        int* refcount; /* 数据参考计数 */

        union
        {
            uchar* ptr;
            short* s;
            int* i;
            float* fl;
            double* db;
        } data; /* data 指针 */

    #ifdef __cplusplus
        union
        {
            int rows;
            int height;
        };

        union
        {
            int cols;
            int width;
        };
    #else
        int rows; /* 行数 */
        int cols; /* 列数*/
    #endif

    } CvMat;
</PRE>
<HR>

<H3><A name=decl_CvMatND>CvMatND</A></H3>
<P class=Blurb>多维、多通道密集数组</P><PRE>    typedef struct CvMatND
    {
        int type; /* CvMatND 标识(CV_MATND_MAGIC_VAL), 元素类型和标号*/
        int dims; /* 数组维数 */

        int* refcount; /* 数据参考计数 */

        union
        {
            uchar* ptr;
            short* s;
            int* i;
            float* fl;
            double* db;
        } data; /* data 指针*/

        /* 每维的数据结构 (元素号,以字节为单位的元素之间的距离)是配套定义的 */
        struct
        {
            int size;
            int step;
        }
        dim[CV_MAX_DIM];

    } CvMatND;
</PRE>
<HR>

<H3><A name=decl_CvSparseMat>CvSparseMat</A></H3>
<P class=Blurb>多维、多通道稀疏数组</P><PRE>    typedef struct CvSparseMat
    {
        int type; /* CvSparseMat 标识 (CV_SPARSE_MAT_MAGIC_VAL), 元素类型和标号 */
        int dims; /* 维数 */
        int* refcount; /* 参考数量 - 未用 */
        struct CvSet* heap; /* HASH表节点池 */
        void** hashtable; /* HASH表:每个入口有一个节点列表,有相同的 "以HASH大小为模板的HASH值" */
        int hashsize; /* HASH表大小 */
        int total; /* 稀疏数组的节点数 */
        int valoffset; /* 数组节点值在字节中的偏移 */
        int idxoffset; /* 数组节点索引在字节中的偏移 */
        int size[CV_MAX_DIM]; /*维大小 */

    } CvSparseMat;
</PRE>
<HR>

<H3><A name=decl_IplImage>IplImage</A></H3>
<P class=Blurb>IPL 图像头</P><PRE>    typedef struct _IplImage
    {
        int  nSize;         /* IplImage大小 */
        int  ID;            /* 版本 (=0)*/
        int  nChannels;     /* 大多数OPENCV函数支持1,2,3 或 4 个通道 */
        int  alphaChannel;  /* 被OpenCV忽略 */
        int  depth;         /* 像素的位深度: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16U,
                               IPL_DEPTH_16S, IPL_DEPTH_32S, IPL_DEPTH_32F and IPL_DEPTH_64F 可支持 */
        char colorModel[4]; /* 被OpenCV忽略 */
        char channelSeq[4]; /* 同上 */
        int  dataOrder;     /* 0 - 交叉存取颜色通道, 1 - 分开的颜色通道.
                               只有cvCreateImage可以创建交叉存取图像 */
        int  origin;        /* 0 - 顶—左结构,
                               1 - 底—左结构 (Windows bitmaps 风格) */
        int  align;         /* 图像行排列 (4 or 8). OpenCV 忽略它,使用 widthStep 代替 */
        int  width;         /* 图像宽像素数 */
        int  height;        /* 图像高像素数*/
        struct _IplROI *roi;/* 图像感兴趣区域. 当该值非空只对该区域进行处理 */
        struct _IplImage *maskROI; /* 在 OpenCV中必须置NULL */
        void  *imageId;     /* 同上*/
        struct _IplTileInfo *tileInfo; /*同上*/
        int  imageSize;     /* 图像数据大小(在交叉存取格式下imageSize=image-&gt;height*image-&gt;widthStep),单位字节*/
        char *imageData;  /* 指向排列的图像数据 */
        int  widthStep;   /* 排列的图像行大小,以字节为单位 */
        int  BorderMode[4]; /* 边际结束模式, 被OpenCV忽略 */
        int  BorderConst[4]; /* 同上 */
        char *imageDataOrigin; /* 指针指向一个不同的图像数据结构(不是必须排列的),是为了纠正图像内存分配准备的 */
    }
    IplImage;
</PRE>
<P>&nbsp; <CODE>IplImage结构来自于</CODE> <EM>Intel Image Processing 
Library(是其本身所具有的)</EM>. OpenCV 只支持其中的一个子集: 
<UL>
  <LI><CODE>alpha通道在</CODE> OpenCV中被忽略. 
  <LI><CODE>colorModel</CODE> 和<CODE>channelSeq</CODE> 被OpenCV忽略. OpenCV颜色转换的 
  唯一个函数 <A 
  href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvCvtColor">cvCvtColor</A>把原图像的颜色空间的目标图像的颜色空间作为一个参数. 

  <LI><CODE>数据顺序</CODE> 必须是IPL_DATA_ORDER_PIXEL (颜色通道是交叉存取), 
  然面平面图像的被选择通道可以被处理,就像COI(感兴趣的通道)被设置过一样. 
  <LI>当 <CODE>widthStep</CODE> 被用于去接近图像行序列,排列是被OpenCV忽略的. 
  <LI><CODE>不支持maskROI</CODE> . 处理MASK的函数把他当作一个分离的参数. MASK在 OpenCV 里是 8-bit, 然而在 
  IPL他是 1-bit. 
  <LI>名字信息不支持. 
  <LI><CODE>边际模式和边际常量是不支持的</CODE>. 每个 OpenCV 函数处理像素的邻近的像素,通常使用单一的固定代码边际模式. 
</LI></UL>除了上述限制, OpenCV处理ROI有不同的要求.要求原图像和目标图像的尺寸或 ROI的尺寸必须(根据不同的作操,例如<A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvPyrDown">cvPyrDown</A> 
目标图像的宽(高)必须等于原图像的宽(高)除2 ±1)精确匹配,而IPL处理交叉区域,如图像的大小或ROI大小可能是完全独立的。&nbsp; 
<HR>

<H3><A name=decl_CvArr>CvArr</A></H3>
<P class=Blurb>不确定数组</P><PRE>    typedef void CvArr;
</PRE>
<P><A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_CvArr*">CvArr*</A> 
仅仅是被用于作函数的参数,用于指示函数接收的数组类型可以不止一个,如 IplImage*, CvMat* 甚至 CvSeq*. 
最终的数组类型是在运行时通过分析数组头的前4 个字节判断。 </P><!-- *****************************************************************************************    
     *****************************************************************************************
     ***************************************************************************************** -->
<HR>

<H1><A name=cxcore_arrays>数组操作</A></H1>
<HR>

<H2><A name=cxcore_arrays_alloc_free>初始化</A></H2>
<HR>

<H3><A name=decl_cvCreateImage>CreateImage</A></H3>
<P class=Blurb>创建头并分配数据</P><PRE>IplImage* cvCreateImage( CvSize size, int depth, int channels );
</PRE>
<P>
<DL>
  <DT>size 
  <DD>图像宽、高. 
  <DT>depth 
  <DD>图像元素的位深度,可以是下面的其中之一:<BR>IPL_DEPTH_8U - 无符号8位整型<BR>IPL_DEPTH_8S - 
  有符号8位整型<BR>IPL_DEPTH_16U - 无符号16位整型<BR>IPL_DEPTH_16S - 
  有符号16位整型<BR>IPL_DEPTH_32S - 有符号32位整型<BR>IPL_DEPTH_32F - 
  单精度浮点数<BR>IPL_DEPTH_64F - 双精度浮点数<BR>
  <DT>channels 
  <DD>每个元素(像素)通道号.可以是 1, 2, 3 或 4.通道是交叉存取的,例如通常的彩色图像数据排列是:<BR>b0 g0 r0 b1 g1 r1 
  ...<BR>虽然通常 IPL 图象格式可以存贮非交叉存取的图像,并且一些OpenCV 也能处理他, 但是这个函数只能创建交叉存取图像. </DD></DL>
<P>函数 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvCreateImage">cvCreateImage</A> 
创建头并分配数据,这个函数是下列的缩写型式 <PRE>    header = cvCreateImageHeader(size,depth,channels);
    cvCreateData(header);
</PRE>
<HR>

<H3><A name=decl_cvCreateImageHeader>CreateImageHeader</A></H3>
<P class=Blurb>分配,初始化,并且返回 IplImage结构</P><PRE>IplImage* cvCreateImageHeader( CvSize size, int depth, int channels );
</PRE>
<P>
<DL>
  <DT>size 
  <DD>图像宽、高. 
  <DT>depth 
  <DD>像深 (见 CreateImage). 
  <DT>channels 
  <DD>通道数 (见 CreateImage). </DD></DL>
<P>函数 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvCreateImageHeader">cvCreateImageHeader</A> 
分配, 初始化, 并且返回 <CODE>IplImage结构</CODE>. 这个函数相似于: <PRE>  iplCreateImageHeader( channels, 0, depth,
                        channels == 1 ? "GRAY" : "RGB",
                        channels == 1 ? "GRAY" : channels == 3 ? "BGR" :
                        channels == 4 ? "BGRA" : "",
                        IPL_DATA_ORDER_PIXEL, IPL_ORIGIN_TL, 4,
                        size.width, size.height,
                        0,0,0,0);
</PRE>然而IPL函数不是作为默认的 (见 <CODE>CV_TURN_ON_IPL_COMPATIBILITY</CODE> 宏) 
<HR>

<H3><A name=decl_cvReleaseImageHeader>ReleaseImageHeader</A></H3>
<P class=Blurb>释放头</P><PRE>void cvReleaseImageHeader( IplImage** image );
</PRE>
<P>
<DL>
  <DT>image 
  <DD>双指针指向头内存分配单元. </DD></DL>
<P>函数 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvReleaseImageHeader">cvReleaseImageHeader</A> 
释放头. 相似于 <PRE>    if( image )
    {
        iplDeallocate( *image, IPL_IMAGE_HEADER | IPL_IMAGE_ROI );
        *image = 0;
    }
</PRE>然而IPL函数不是作为默认的 (见 <CODE>CV_TURN_ON_IPL_COMPATIBILITY</CODE> 宏) 
<HR>

<H3><A name=decl_cvReleaseImage>ReleaseImage</A></H3>
<P class=Blurb>释放头和图像数据</P><PRE>void cvReleaseImage( IplImage** image );
</PRE>
<P>
<DL>
  <DT>image 
  <DD>双指针指向图像内存分配单元。 </DD></DL>
<P>函数 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvReleaseImage">cvReleaseImage</A> 
释放头和图像数据,相似于: <PRE>    if( *image )
    {
        cvReleaseData( *image );
        cvReleaseImageHeader( image );
    }
</PRE>
<HR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -