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

📄 cxcore reference manual.htm

📁 Opencv的中文参考指南
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<P>
<DL>
  <DT>arr 
  <DD>输入数组. 
  <DT>header 
  <DD>指向 <A 
  href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_CvMat">CvMat</A>结构的指针,作为临时缓存 
  . 
  <DT>coi 
  <DD>可选的输出参数,用于输出COI. 
  <DT>allowND 
  <DD>如果非0,函数就接收多维密集数组 (CvMatND*)并且返回 2D (如果 CvMatND 是二维的)或 1D 矩阵(当 CvMatND 
  是一维或多于二维). 数组必须是连续的. </DD></DL>
<P>函数 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvGetMat">cvGetMat</A>从输入的数组生成矩阵头,输入的数组可以是 
- <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_CvMat">CvMat</A>结构,&nbsp; 
<CODE>IplImage结构</CODE> 或多维密集数组 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_CvMatND*">CvMatND*</A> 
(后者只有当 <CODE>allowND != 0时才可以使用</CODE>) . 如果是矩阵函数只是返回指向矩阵的指针.如果是 
<CODE>IplImage*</CODE> 或 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_CvMatND*">CvMatND*</A> 
函数用当前图像的ROI初始化头结构并且返回指向这个临时结构的指针。因为<A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_CvMat">CvMat</A>不支持COI,所以他们的返回结果是不同的. 

<P>这个函数提供了一个简单的方法,用同一代码处理 <CODE>IplImage</CODE> 和 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_CvMat">CvMat</A>二种数据类型。这个函数的反向转换可以用 
<A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvGetImage">cvGetImage</A>将 
<A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_CvMat">CvMat</A> 
转换成 <CODE>IplImage</CODE> . </P>
<P>输入的数组必须有已分配好的底层数据或附加的数据,否则该函数将调用失败 </P>如果输入的数组是<CODE>IplImage</CODE> 
格式,使用平面式数据编排并设置了COI,函数返回的指针指向被选定的平面并设置COI=0.利用OPENCV函数对于多通道平面编排图像可以处理每个平面。 
<HR>

<H3><A name=decl_cvGetImage>GetImage</A></H3>
<P class=Blurb>从不确定数组返回图像头</P><PRE>IplImage* cvGetImage( const CvArr* arr, IplImage* image_header );
</PRE>
<P>
<DL>
  <DT>arr 
  <DD>输入数组. 
  <DT>image_header 
  <DD>指向<CODE>IplImage结构的指针,该结构存贮在一个临时缓存</CODE> . </DD></DL>
<P>函数 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvGetImage">cvGetImage</A> 
从输出数组获得图头,该数组可是以矩阵- <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_CvMat*">CvMat*</A>, 
或图像 - <CODE>IplImage*</CODE>. 如果是图像函数只是返回输入参数的指针,如是查 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_CvMat*">CvMat*</A> 
函数用输入参数矩阵初始化图像头。因此如果我们把&nbsp; <CODE>IplImage</CODE> 转换成 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_CvMat">CvMat</A> 
然后再转换 CvMat 回 IplImage,如果ROI被设置过了我们可能会获得不同的头,这样一些计算图像跨度的IPL函数就会失败。</P>
<HR>

<H3><A name=decl_cvCreateSparseMat>CreateSparseMat</A></H3>
<P class=Blurb>创建稀疏数组</P><PRE>CvSparseMat* cvCreateSparseMat( int dims, const int* sizes, int type );
</PRE>
<P>
<DL>
  <DT>dims 
  <DD>数组维数。相对于密集型矩阵,稀疏数组的维数是不受限制的(最多可达 2<SUP>16</SUP>). 
  <DT>sizes 
  <DD>数组的维大小. 
  <DT>type 
  <DD>数组元素类型,见 CvMat </DD></DL>
<P>函数 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvCreateSparseMat">cvCreateSparseMat</A> 
分配多维稀疏数组. Initially the array contain no elements, that is <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvGet*D">cvGet*D</A> 
or <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvGetReal*D">cvGetReal*D</A> 
return zero for every index</P>
<HR>

<H3><A name=decl_cvReleaseSparseMat>ReleaseSparseMat</A></H3>
<P class=Blurb>删除稀疏数组</P>
<P class=Blurb><BR>void cvReleaseSparseMat( CvSparseMat** mat );<BR></P>
<DL>
  <DT>mat 
  <DD>双指针指向数组。 </DD></DL>
<P>函数 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvReleaseSparseMat">cvReleaseSparseMat</A>释放稀疏数组并清空数组指针</P>
<HR>

<H3><A name=decl_cvCloneSparseMat>CloneSparseMat</A></H3>
<P class=Blurb>创建稀疏数组的拷贝</P><PRE>CvSparseMat* cvCloneSparseMat( const CvSparseMat* mat );
</PRE>
<P>
<DL>
  <DT>mat 
  <DD>输放的数组。 </DD></DL>
<P>函数 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvCloneSparseMat">cvCloneSparseMat</A> 
创建输入数组的拷贝并返回指向这个拷贝的指针.</P>
<HR>

<H2><A name=cxcore_arrays_get_set>获取元素和数组子集</A></H2>
<HR>

<H3><A name=decl_cvGetSubRect>GetSubRect</A></H3>
<P class=Blurb>根据输入的图像或矩阵的矩形数组子集返回矩阵头</P><PRE>CvMat* cvGetSubRect( const CvArr* arr, CvMat* submat, CvRect rect );
</PRE>
<P>
<DL>
  <DT>arr 
  <DD>输入数组 
  <DT>submat 
  <DD>指针指向结果数组头Pointer to the resultant sub-array header. 
  <DT>rect 
  <DD>以0坐标为基准的ROI. </DD></DL>
<P>函数 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvGetSubRect">cvGetSubRect</A> 
根据指定的数组矩形返回矩阵头,换句话说,函数允许处理输入数组的指定的一个子矩形,就像一个独立的数组一样进行处理。函数在处理时要考虑进输入数组的ROI,因此数组的ROI是实际上被提取的。</P>
<HR>

<H3><A name=decl_cvGetRow>GetRow, GetRows</A></H3>
<P class=Blurb>返回数组的行或在一定跨度内的行</P><PRE>CvMat* cvGetRow( const CvArr* arr, CvMat* submat, int row );
CvMat* cvGetRows( const CvArr* arr, CvMat* submat, int start_row, int end_row, int delta_row=1 );
</PRE>
<DL>
  <DT>arr 
  <DD>输入数组. 
  <DT>submat 
  <DD>指向返回的子数组头的指针. 
  <DT>row 
  <DD>被选定的行号下标,以0为基准. 
  <DT>start_row 
  <DD>跨度的开始行(包括此行)索引下标,以0为下标基准 
  <DT>end_row 
  <DD>跨度的结束行(不包括此行)索引下标,以0为下标基准. 
  <DT>delta_row 
  <DD>在跨度内的索引下标跨步,从开始行到结束行每隔<CODE>delta_row行提取一行。</CODE> </DD></DL>
<P>函数<CODE>GetRow</CODE> 和 <CODE>GetRows</CODE> 根据指定的行或跨度从输入数组中返回对应的头。 
<CODE>GetRow</CODE> 是 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvGetRows">cvGetRows</A>的缩写: 
<PRE>cvGetRow( arr, submat, row ) ~ cvGetRows( arr, submat, row, row + 1, 1 );
</PRE>
<HR>

<H3><A name=decl_cvGetCol>GetCol, GetCols</A></H3>
<P class=Blurb>返回数组的列或一定跨度内的列</P><PRE>CvMat* cvGetCol( const CvArr* arr, CvMat* submat, int col );
CvMat* cvGetCols( const CvArr* arr, CvMat* submat, int start_col, int end_col );
</PRE>
<P>
<DL>
  <DT>arr 
  <DD>输入数组 
  <DT>submat 
  <DD>指向结果子数组头指针. 
  <DT>col 
  <DD>选定的列索引下标,该下标以0为基准。 
  <DT>start_col 
  <DD>跨度的开始列(包括该列)索引下标,该下标以0为基准。 
  <DT>end_col 
  <DD>跨度的结束列(不包括该列)索引下标,该下标以0为基准。 </DD></DL>
<P>函数 <CODE>GetCol</CODE> 和 <CODE>GetCols</CODE> 
根据指定的列/列跨度返回头。<CODE>GetCol</CODE> 是&nbsp; <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvGetCols">cvGetCols</A>的缩写形式:<PRE>cvGetCol( arr, submat, col ); // ~ cvGetCols( arr, submat, col, col + 1 );
</PRE>
<HR>

<H3><A name=decl_cvGetDiag>GetDiag</A></H3>
<P class=Blurb>返回一个数组对角线</P><PRE>CvMat* cvGetDiag( const CvArr* arr, CvMat* submat, int diag=0 );
</PRE>
<P>
<DL>
  <DT>arr 
  <DD>输入数组. 
  <DT>submat 
  <DD>指向结果子集的头指针. 
  <DT>diag 
  <DD>数组对角线。0是主对角线,-1是主对角线上面对角线,1是主对角线下对角线,以此类推。 </DD></DL>
<P>函数 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvGetDiag">cvGetDiag</A> 
根据指定的diag参数返回数组的对角线头。</P>
<HR>

<H3><A name=decl_cvGetSize>GetSize</A></H3>
<P class=Blurb>返回图像或矩阵ROI大小</P><PRE>CvSize cvGetSize( const CvArr* arr );
</PRE>
<P>
<DL>
  <DT>arr 
  <DD>数组头. </DD></DL>
<P>函数 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvGetSize">cvGetSize</A> 
返回矩阵或图像的行数和列数,如果是图像就返回ROI的大小</P>
<HR>

<H3><A name=decl_cvInitSparseMatIterator>InitSparseMatIterator</A></H3>
<P class=Blurb>初始化稀疏数线元素迭代器</P><PRE>CvSparseNode* cvInitSparseMatIterator( const CvSparseMat* mat,
                                       CvSparseMatIterator* mat_iterator );
</PRE>
<P>
<DL>
  <DT>mat 
  <DD>输入的数组. 
  <DT>mat_iterator 
  <DD>被初始化迭代器. </DD></DL>
<P>函数 <A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvInitSparseMatIterator">cvInitSparseMatIterator</A> 
初始化稀疏数组元素的迭代器并且返回指向第一个元素的指针,如果数组为空则返回NULL。</P>
<HR>

<H3><A name=decl_cvGetNextSparseNode>GetNextSparseNode</A></H3>
<P class=Blurb>初始化稀疏数线元素迭代器</P><PRE>CvSparseNode* cvGetNextSparseNode( CvSparseMatIterator* mat_iterator );
</PRE>
<P>
<DL>
  <DT>mat_iterator 
  <DD>稀疏数组的迭代器 </DD></DL>
<P>函数<A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvGetNextSparseNode">cvGetNextSparseNode</A> 
移动迭代器到下一个稀疏矩阵元素并返回指向他的指针。在当前的版本不存在任何元素的特殊顺序,因为元素是按HASH表存贮的下面的列子描述怎样在稀疏矩阵上迭代 
:</P>
<P><FONT color=blue size=4>利</FONT><FONT color=blue size=4>用<A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvInitSparseMatIterator">cvInitSparseMatIterator</A> 
和<A 
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvGetNextSparseNode">cvGetNextSparseNode</A> 
计算浮点稀疏数组的和。</FONT> <PRE>    double sum;
    int i, dims = cvGetDims( array );
    CvSparseMatIterator mat_iterator;
    CvSparseNode* node = cvInitSparseMatIterator( array, &amp;mat_iterator );

    for( ; node != 0; node = cvGetNextSparseNode( &amp;mat_iterator ))
    {
        int* idx = CV_NODE_IDX( array, node ); /* get pointer to the element indices */
        float val = *(float*)CV_NODE_VAL( array, node ); /* get value of the element
                                                          (assume that the type is CV_32FC1) */
        printf( "(" );
        for( i = 0; i &lt; dims; i++ )
            printf( "%4d%s", idx[i], i &lt; dims - 1 "

⌨️ 快捷键说明

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