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

📄 opencvref_cxcore.cn.htm

📁 opencv 中文文档 关于opencv 的所有函数
💻 HTM
📖 第 1 页 / 共 5 页
字号:
        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 只支持其中的一个子集:     </p><ul>  <li><code>alpha通道在</code> OpenCV中被忽略.       </li><li><code>colorModel</code> 和<code>channelSeq</code> 被OpenCV忽略. OpenCV颜色转换的       唯一个函数 <a href="#decl_cvCvtColor">cvCvtColor</a>把原图像的颜色空间的目标图像的颜色空间作为一个参数.       </li><li><code>数据顺序</code> 必须是IPL_DATA_ORDER_PIXEL (颜色通道是交叉存取),       然面平面图像的被选择通道可以被处理,就像COI(感兴趣的通道)被设置过一样.   </li><li>当 <code>widthStep</code> 被用于去接近图像行序列,排列是被OpenCV忽略的.       </li><li><code>不支持maskROI</code> . 处理MASK的函数把他当作一个分离的参数. MASK在 OpenCV 里是 8-bit, 然而在       IPL他是 1-bit.       </li><li>名字信息不支持.   </li><li><code>边际模式和边际常量是不支持的</code>. 每个 OpenCV 函数处理像素的邻近的像素,通常使用单一的固定代码边际模式.     </li></ul>除了上述限制, OpenCV处理ROI有不同的要求.要求原图像和目标图像的尺寸或 ROI的尺寸必须(根据不同的作操,例如<a href="#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="#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></p><dl>  <dt>size   </dt><dd>图像宽、高.   </dd><dt>depth   </dt><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>      </dd><dt>channels   </dt><dd>每个元素(像素)通道号.可以是 1, 2, 3 或 4.通道是交叉存取的,例如通常的彩色图像数据排列是:<br>b0 g0 r0 b1 g1 r1       ...<br>虽然通常 IPL 图象格式可以存贮非交叉存取的图像,并且一些OpenCV 也能处理他, 但是这个函数只能创建交叉存取图像. </dd></dl>    <p>函数 <a href="#decl_cvCreateImage">cvCreateImage</a> 创建头并分配数据,这个函数是下列的缩写型式 </p><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></p><dl>  <dt>size   </dt><dd>图像宽、高.   </dd><dt>depth   </dt><dd>像深 (见 CreateImage).       </dd><dt>channels   </dt><dd>通道数 (见 CreateImage). </dd></dl>    <p>函数 <a href="#decl_cvCreateImageHeader">cvCreateImageHeader</a> 分配, 初始化, 并且返回     <code>IplImage结构</code>. 这个函数相似于: </p><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></p><dl>  <dt>image   </dt><dd>双指针指向头内存分配单元. </dd></dl><p>函数 <a href="#decl_cvReleaseImageHeader">cvReleaseImageHeader</a> 释放头. 相似于 </p><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></p><dl>  <dt>image   </dt><dd>双指针指向图像内存分配单元。 </dd></dl><p>函数 <a href="#decl_cvReleaseImage">cvReleaseImage</a> 释放头和图像数据,相似于: </p><pre>    if( *image )    {        cvReleaseData( *image );        cvReleaseImageHeader( image );    }</pre>    <hr><h3><a name="decl_cvInitImageHeader">InitImageHeader</a></h3><p class="Blurb">初始他被用图分配的图像头</p><pre>IplImage* cvInitImageHeader( IplImage* image, CvSize size, int depth,                             int channels, int origin=0, int align=4 );</pre><p></p><dl>  <dt>image   </dt><dd>被初始化的图像头.   </dd><dt>size   </dt><dd>图像的宽高.   </dd><dt>depth   </dt><dd>像深(见 CreateImage).       </dd><dt>channels   </dt><dd>通道数(见 CreateImage).       </dd><dt>origin   </dt><dd><code>IPL_ORIGIN_TL</code> 或 <code>IPL_ORIGIN_BL</code>.       </dd><dt>align   </dt><dd>图像行排列, 典型的 4 或 8 字节. </dd></dl>    <p>函数 <a href="#decl_cvInitImageHeader">cvInitImageHeader</a> 初始他图像头结构,     指向用户指定的图像并且返回这个指针。 </p><hr><h3><a name="decl_cvCloneImage">CloneImage</a></h3><p class="Blurb">制作图像的完整拷贝</p><pre>IplImage* cvCloneImage( const IplImage* image );</pre><p></p><dl>  <dt>image   </dt><dd>原图像. </dd></dl><p>函数 <a href="#decl_cvCloneImage">cvCloneImage</a> 制作图像的完整拷贝包括头、ROI和数据 </p>    <hr><h3><a name="decl_cvSetImageCOI">SetImageCOI</a></h3><p class="Blurb">基于给定的值设置感兴趣通道</p><pre>void cvSetImageCOI( IplImage* image, int coi );</pre><p></p><dl>  <dt>image   </dt><dd>图像头.   </dd><dt>coi   </dt><dd>感兴趣通道. </dd></dl><p>函数 <a href="#decl_cvSetImageCOI">cvSetImageCOI</a> 基于给定的值设置感兴趣的通道。值 0     意味着所有的通道都被选定, 1 意味着第一个通道被选定等等。如果 ROI 是 <code>NULL</code> 并且<code>COI!= 0</code>,     ROI 被分配. 然而大多数的 OpenCV 函数不支持 COI, 对于这种状况当处理分离图像/矩阵通道时,可以拷贝(通过 <a href="#decl_cvCopy">cvCopy</a> 号 <a href="#decl_cvSplit">cvSplit</a>)     通道来分离图像/矩阵,处理后如果需要可再拷贝(通过<a href="#decl_cvCopy">cvCopy</a> 或 <a href="#decl_cvCvtPlaneToPix">cvCvtPlaneToPix</a>)回来.</p><hr><h3><a name="decl_cvGetImageCOI">GetImageCOI</a></h3><p class="Blurb">返回感兴趣通道号</p><pre>int cvGetImageCOI( const IplImage* image );</pre><p></p><dl>  <dt>image   </dt><dd>图像头. </dd></dl><p>函数<a href="#decl_cvGetImageCOI">cvGetImageCOI</a> 返回图像的感兴趣通道(当所有的通道都被选中返回值是0).</p>    <hr><h3><a name="decl_cvSetImageROI">SetImageROI</a></h3><p class="Blurb">基于给定的矩形设置感兴趣区域</p><pre>void cvSetImageROI( IplImage* image, CvRect rect );</pre><p></p><dl>  <dt>image   </dt><dd>图像头.   </dd><dt>rect   </dt><dd>ROI 矩形. </dd></dl>    <p>函数 <a href="#decl_cvSetImageROI">cvSetImageROI</a> 基于给定的矩形设置图像的 ROI(感兴趣区域) .     如果ROI是<code>NULL</code> 并且参数RECT的值不等于整个图像, ROI被分配. 不像 COI, 大多数的 OpenCV 函数支持 ROI     并且处理它就行它是一个分离的图像 (例如, 所有的像素坐标从ROI的顶-左或底-左角(基于图像的结构)计算。</p>    <hr><h3><a name="decl_cvResetImageROI">ResetImageROI</a></h3><p class="Blurb">释放图偈的ROI</p><pre>void cvResetImageROI( IplImage* image );</pre><p></p><dl>  <dt>image   </dt><dd>图像头. </dd></dl><p>函数 <a href="#decl_cvResetImageROI">cvResetImageROI</a> 释放图像 ROI.     释放之后整个图像被认为是全部被选中的。相似的结果可以通过下述办法</p><pre>cvSetImageROI( image, cvRect( 0, 0, image-&gt;width, image-&gt;height ));cvSetImageCOI( image, 0 );</pre><p>但是后者的变量不分配 <code>image-&gt;roi</code>. </p>    <hr><h3><a name="decl_cvGetImageROI">GetImageROI</a></h3><p class="Blurb">返回图像的 ROI 坐标</p><pre>CvRect cvGetImageROI( const IplImage* image );</pre>    <p></p><dl>  <dt>image   </dt><dd>图像头. </dd></dl><p>函数 <a href="#decl_cvGetImageROI">cvGetImageROI</a> 返回图像ROI 坐标. 如果没有ROI则返回矩形值为     <a href="#decl_cvRect">cvRect</a>(0,0,image-&gt;width,image-&gt;height)&nbsp;</p><hr><h3><a name="decl_cvCreateMat">CreateMat</a></h3><p class="Blurb">创建矩阵</p><pre>CvMat* cvCreateMat( int rows, int cols, int type );</pre><p></p><dl>  <dt>rows   </dt><dd>矩阵行数.   </dd><dt>cols   </dt><dd>矩阵列数.   </dd><dt>type   </dt><dd>矩阵元素类型. 通常以       <code>CV_&lt;bit_depth&gt;(S|U|F)C&lt;number_of_channels&gt;型式描述</code>,       例如:<br><code>CV_8UC1</code> 意思是一个8-bit 无符号单通道矩阵, <code>CV_32SC2</code>       意思是一个32-bit 有符号二个通道的矩阵. </dd></dl>    <p>函数 <a href="#decl_cvCreateMat">cvCreateMat</a> 为新的矩阵分配头和下面的数据,     并且返回一个指向新创建的矩阵的指针. 是下列操作的缩写型式:</p><pre>    CvMat* mat = cvCreateMatHeader( rows, cols, type );    cvCreateData( mat );</pre>    <p>矩阵按行存贮. 所有的行以4个字节排列。 </p>    <hr><h3><a name="decl_cvCreateMatHeader">CreateMatHeader</a></h3><p class="Blurb">创建新的矩阵头</p><pre>CvMat* cvCreateMatHeader( int rows, int cols, int type );</pre><p></p><dl>  <dt>rows   </dt><dd>矩阵行数.   </dd><dt>cols 

⌨️ 快捷键说明

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