?? cxcore reference manual.htm
字號:
<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>結構,
<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>
函數用輸入參數矩陣初始化圖像頭。因此如果我們把 <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> 是 <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, &mat_iterator );
for( ; node != 0; node = cvGetNextSparseNode( &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 < dims; i++ )
printf( "%4d%s", idx[i], i < dims - 1 "
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -