📄 cxcore中文 参考手册.htm
字号:
<P>
<DL>
<DT>arr
<DD>输入数组.
<DT>sizes
<DD>可选的输出数组维尺寸向量,对于2D数组第一位是数组行数(高),第二位是数组列数(宽)
<DT>index
<DD>以0为基准的维索引下标(对于矩阵0意味着行数,1意味着列数,对于图象0意味着高,1意味着宽。 </DD></DL>
<P>函数 <A href="#decl_cvGetDims">cvGetDims</A> 返回维数和他们的大小。如果是
<CODE>IplImage</CODE> 或 <A href="#decl_CvMat">CvMat</A> 总是返回2,不管图像/矩阵行数。函数 <A
href="#decl_cvGetDimSize">cvGetDimSize</A>
返回特定的维大小(每维的元素数)。例如,接下来的代码使用二种方法计算数组元素总数。<PRE>// via cvGetDims()
int sizes[CV_MAX_DIM];
int i, total = 1;
int dims = cvGetDims( arr, size );
for( i = 0; i < dims; i++ )
total *= sizes[i];
// via cvGetDims() and cvGetDimSize()
int i, total = 1;
int dims = cvGetDims( arr );
for( i = 0; i < dims; i++ )
total *= cvGetDimsSize( arr, i );
</PRE>
<HR>
<H3><A name=decl_cvPtr*D>Ptr*D</A></H3>
<P class=Blurb>返回指向特殊数组元素的指针</P><PRE>uchar* cvPtr1D( const CvArr* arr, int idx0, int* type=NULL );
uchar* cvPtr2D( const CvArr* arr, int idx0, int idx1, int* type=NULL );
uchar* cvPtr3D( const CvArr* arr, int idx0, int idx1, int idx2, int* type=NULL );
uchar* cvPtrND( const CvArr* arr, int* idx, int* type=NULL, int create_node=1, unsigned* precalc_hashval=NULL );
</PRE>
<P>
<DL>
<DT>arr
<DD>输入数组.
<DT>idx0
<DD>元素下标的第一个以0为基准的成员
<DT>idx1
<DD>元素下标的第二个以0为基准的成员
<DT>idx2
<DD>元素下标的第三个以0为基准的成员
<DT>idx
<DD>数组元素下标
<DT>type
<DD>可选的,矩阵元素类型输出参数
<DT>create_node
<DD>可选的,为稀疏矩阵输入的参数。如果这个参数非零就意味着被需要的元素如果不存在就会被创建。
<DT>precalc_hashval
<DD>可选的,为稀疏矩阵设置的输入参数。如果这个指针非NULL,函数不会重新计算节点的HASH值,而是从指定位置获取。这种方法有利于提高智能组合数据的操作(TODO:
提供了一个例子) </DD></DL>
<P>函数<A href="#decl_cvPtr*D">cvPtr*D</A> 返回指向特殊数组元素的指针。数组维数应该与转递给函数物下标数相匹配,除了 <A
href="#decl_cvPtr1D">cvPtr1D</A> 函数,它可以被用于顺序存取的1D,2D或nD密集数组 </P>
<P>函数也可以用于稀疏数组,并且如果被需要的节点不存在函数可以创建这个节点并设置为0</P>
<P>就像其它获取数组元素的函数 (<A href="#decl_cvGet[Real]*D">cvGet[Real]*D</A>, <A
href="#decl_cvSet[Real]*D">cvSet[Real]*D</A>)如果元素的下标超出了范围就会产生错误 </P>
<HR>
<H3><A name=decl_cvGet*D>Get*D</A></H3>
<P class=Blurb>返回特殊的数组元素</P><PRE>CvScalar cvGet1D( const CvArr* arr, int idx0 );
CvScalar cvGet2D( const CvArr* arr, int idx0, int idx1 );
CvScalar cvGet3D( const CvArr* arr, int idx0, int idx1, int idx2 );
CvScalar cvGetND( const CvArr* arr, int* idx );
</PRE>
<P>
<DL>
<DT>arr
<DD>输入数组.
<DT>idx0
<DD>元素下标第一个以0为基准的成员
<DT>idx1
<DD>元素下标第二个以0为基准的成员
<DT>idx2
<DD>元素下标第三个以0为基准的成员
<DT>idx
<DD>元素下标数组 </DD></DL>
<P>函数<A href="#decl_cvGet*D">cvGet*D</A> 返回指定的数组元素。对于稀疏数组如果需要的节点不存在函数返回0
(不会创建新的节点)</P>
<HR>
<H3><A name=decl_cvGetReal*D>GetReal*D</A></H3>
<P class=Blurb>返回单通道数组的指定元素</P><PRE>double cvGetReal1D( const CvArr* arr, int idx0 );
double cvGetReal2D( const CvArr* arr, int idx0, int idx1 );
double cvGetReal3D( const CvArr* arr, int idx0, int idx1, int idx2 );
double cvGetRealND( const CvArr* arr, int* idx );
</PRE>
<P>
<DL>
<DT>arr
<DD>输入数组,必须是单通道.
<DT>idx0
<DD>元素下标的第一个成员,以0为基准
<DT>idx1
<DD>元素下标的第二个成员,以0为基准
<DT>idx2
<DD>元素下标的第三个成员,以0为基准
<DT>idx
<DD>元素下标数组 </DD></DL>
<P>函数<A href="#decl_cvGetReal*D">cvGetReal*D</A>
返回单通道数组的指定元素,如果数组是多通道的,就会产生运行时错误,而 <A href="#decl_cvGet*D">cvGet*D</A>
函数可以安全的被用于单通道和多通道数组,但他们运行时会有点慢</P>
<P>如果指定的点不存在对于稀疏数组点会返回0(不会创建新的节点)。</P>
<HR>
<H3><A name=decl_cvmGet>mGet</A></H3>
<P class=Blurb>返回单通道浮点矩阵指定元素</P><PRE>double cvmGet( const CvMat* mat, int row, int col );
</PRE>
<P>
<DL>
<DT>mat
<DD>输入矩阵.
<DT>row
<DD>行下标,以0为基点.
<DT>col
<DD>列下标,以0为基点 </DD></DL>
<P>函数 <A href="#decl_cvmGet">cvmGet</A> 是 <A
href="#decl_cvGetReal2D">cvGetReal2D</A>对于单通道浮点矩阵的快速替代函数,函数运行比较快速因为它是内连函数
,这个函数对于数组类型、数组元素类型的检查作的很少,并且仅在调式模式下检查数的行和列范围。</P>
<HR>
<H3><A name=decl_cvSet*D>Set*D</A></H3>
<P class=Blurb>修改指定的数组</P><PRE>void cvSet1D( CvArr* arr, int idx0, CvScalar value );
void cvSet2D( CvArr* arr, int idx0, int idx1, CvScalar value );
void cvSet3D( CvArr* arr, int idx0, int idx1, int idx2, CvScalar value );
void cvSetND( CvArr* arr, int* idx, CvScalar value );
</PRE>
<P>
<DL>
<DT>arr
<DD>输入数组
<DT>idx0
<DD>元素下标的第一个成员,以0为基点
<DT>idx1
<DD>元素下标的第二个成员,以0为基点
<DT>idx2
<DD>元素下标的第三个成员,以0为基点
<DT>idx
<DD>元素下标数组
<DT>value
<DD>指派的值 </DD></DL>
<P>函数 <A href="#decl_cvSet*D">cvSet*D</A>
指定新的值给指定的数组元素。对于稀疏矩阵如果指定节点不存在函数创建新的节点</P>
<HR>
<H3><A name=decl_cvSetReal*D>SetReal*D</A></H3>
<P class=Blurb>修改指定数组元素值</P><PRE>void cvSetReal1D( CvArr* arr, int idx0, double value );
void cvSetReal2D( CvArr* arr, int idx0, int idx1, double value );
void cvSetReal3D( CvArr* arr, int idx0, int idx1, int idx2, double value );
void cvSetRealND( CvArr* arr, int* idx, double value );
</PRE>
<P>
<DL>
<DT>arr
<DD>输入数组.
<DT>idx0
<DD>元素下标的第一个成员,以0为基点
<DT>idx1
<DD>元素下标的第二个成员,以0为基点
<DT>idx2
<DD>元素下标的第三个成员,以0为基点
<DT>idx
<DD>元素下标数组
<DT>value
<DD>指派的值 </DD></DL>
<P>函数 <A href="#decl_cvSetReal*D">cvSetReal*D</A>
分配新的值给单通道数组的指定元素,如果数组是多通道就会产生运行时错误。然而<A href="#decl_cvSet*D">cvSet*D</A>
可以安全的被用于多通道和单通道数组,只是稍微有点慢。</P>
<P>对于稀疏数组如果指定的节点不存在函数会创建该节点。</P>
<HR>
<H3><A name=decl_cvmSet>mSet</A></H3>
<P class=Blurb>返回单通道浮点矩阵的指定元素</P><PRE>void cvmSet( CvMat* mat, int row, int col, double value );
</PRE>
<P>
<DL>
<DT>mat
<DD>矩阵.
<DT>row
<DD>行下标,以0为基点.
<DT>col
<DD>列下标,以0为基点.
<DT>value
<DD>矩阵元素的新值 </DD></DL>
<P>函数<A href="#decl_cvmSet">cvmSet</A> 是<A
href="#decl_cvSetReal2D">cvSetReal2D</A>
快速替代,对于单通道浮点矩阵因为这个函数是内连的所以比较快,函数对于数组类型、数组元素类型的检查作的很少,并且仅在调式模式下检查数的行和列范围。</P>
<HR>
<H3><A name=decl_cvClear*D>Clear*D</A></H3>
<P class=Blurb>清除指定数组元素</P><PRE>void cvClearND( CvArr* arr, int* idx );
</PRE>
<P>
<DL>
<DT>arr
<DD>输入数组.
<DT>idx
<DD>数组元素下标 </DD></DL>
<P>函数<A href="#decl_cvClear*D">cvClearND</A> 清除指定密集型数组的元素(置0)或删除稀疏数组的元素
,如果元素不存在函数不作任何事</P>
<HR>
<H2><A name=cxcore_arrays_copying>拷贝和添加</A></H2>
<HR>
<H3><A name=decl_cvCopy>Copy</A></H3>
<P class=Blurb>拷贝一个数组给另一个数组</P><PRE>void cvCopy( const CvArr* src, CvArr* dst, const CvArr* mask=NULL );
</PRE>
<P>
<DL>
<DT>src
<DD>输入数组.
<DT>dst
<DD>输出数组
<DT>mask
<DD>Operation mask, 8-bit single channel array; specifies elements of
destination array to be changed. </DD></DL>
<P>函数 <A href="#decl_cvCopy">cvCopy</A> copies selected elements from
input array to output array:</P>
<P>dst(I)=src(I) if mask(I)!=0. </P>
<P>If any of the passed arrays is of <CODE>IplImage</CODE> type, then its ROI
and COI fields are used. Both arrays must have the same type, the same number of
dimensions and the same size. 函数 can also copy sparse arrays (mask is
not supported in this case).</P>
<HR>
<H3><A name=decl_cvSet>Set</A></H3>
<P class=Blurb>Sets every element of array to given value</P><PRE>void cvSet( CvArr* arr, CvScalar value, const CvArr* mask=NULL );
</PRE>
<P>
<DL>
<DT>arr
<DD>The destination array.
<DT>value
<DD>Fill value.
<DT>mask
<DD>操作覆盖面,8位单通道数组 ; 输出数组中的覆盖面指定元素被除数修改. </DD></DL>
<P>函数 <A href="#decl_cvSet">cvSet</A> 拷贝数量值到输出数组的每一个被除数选定的元素:</P><PRE>arr(I)=value if mask(I)!=0</PRE>
<P>如果数组 <CODE>arr</CODE> 是 <CODE>IplImage</CODE> 类型, 那么就会使用ROI,但 COI不能设置 .</P>
<HR>
<H3><A name=decl_cvSetZero>SetZero</A></H3>
<P class=Blurb>清空数组</P><PRE>void cvSetZero( CvArr* arr );
#define cvZero cvSetZero
</PRE>
<P>
<DL>
<DT>arr
<DD>要被清空数组. </DD></DL>
<P>函数 <A href="#decl_cvSetZero">cvSetZero</A> 清空数组. 对于密集型号数组(CvMat, CvMatND or
IplImage) cvZero(array) 就相当于 cvSet(array,cvScalarAll(0),0),
对于稀疏数组所有的元素都将被删除.</P><!-- *****************************************************************************************
*****************************************************************************************
******************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -