📄 cxcore reference manual.htm
字号:
<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>
<DL>
<DT>image
<DD>被初始化的图像头.
<DT>size
<DD>图像的宽高.
<DT>depth
<DD>像深(见 CreateImage).
<DT>channels
<DD>通道数(见 CreateImage).
<DT>origin
<DD><CODE>IPL_ORIGIN_TL</CODE> 或 <CODE>IPL_ORIGIN_BL</CODE>.
<DT>align
<DD>图像行排列, 典型的 4 或 8 字节. </DD></DL>
<P>函数 <A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#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>
<DL>
<DT>image
<DD>原图像. </DD></DL>
<P>函数 <A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#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>
<DL>
<DT>image
<DD>图像头.
<DT>coi
<DD>感兴趣通道. </DD></DL>
<P>函数 <A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvSetImageCOI">cvSetImageCOI</A>
基于给定的值设置感兴趣的通道。值 0 意味着所有的通道都被选定, 1 意味着第一个通道被选定等等。如果 ROI 是 <CODE>NULL</CODE>
并且<CODE>COI!= 0</CODE>, ROI 被分配. 然而大多数的 OpenCV 函数不支持 COI,
对于这种状况当处理分离图像/矩阵通道时,可以拷贝(通过 <A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvCopy">cvCopy</A>
号 <A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvSplit">cvSplit</A>)
通道来分离图像/矩阵,处理后如果需要可再拷贝(通过<A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvCopy">cvCopy</A>
或 <A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#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>
<DL>
<DT>image
<DD>图像头. </DD></DL>
<P>函数<A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#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>
<DL>
<DT>image
<DD>图像头.
<DT>rect
<DD>ROI 矩形. </DD></DL>
<P>函数 <A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#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>
<DL>
<DT>image
<DD>图像头. </DD></DL>
<P>函数 <A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvResetImageROI">cvResetImageROI</A>
释放图像 ROI. 释放之后整个图像被认为是全部被选中的。相似的结果可以通过下述办法</P><PRE>cvSetImageROI( image, cvRect( 0, 0, image->width, image->height ));
cvSetImageCOI( image, 0 );
</PRE>
<P>但是后者的变量不分配 <CODE>image->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>
<DL>
<DT>image
<DD>图像头. </DD></DL>
<P>函数 <A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvGetImageROI">cvGetImageROI</A>
返回图像ROI 坐标. 如果没有ROI则返回矩形值为 <A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvRect">cvRect</A>(0,0,image->width,image->height) </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>
<DL>
<DT>rows
<DD>矩阵行数.
<DT>cols
<DD>矩阵列数.
<DT>type
<DD>矩阵元素类型. 通常以
<CODE>CV_<bit_depth>(S|U|F)C<number_of_channels>型式描述</CODE>,
例如:<BR><CODE>CV_8UC1</CODE> 意思是一个8-bit 无符号单通道矩阵, <CODE>CV_32SC2</CODE>
意思是一个32-bit 有符号二个通道的矩阵. </DD></DL>
<P>函数 <A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#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>
<DL>
<DT>rows
<DD>矩阵行数.
<DT>cols
<DD>矩阵列数.
<DT>type
<DD>矩阵元素类型(见 <A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvCreateMat">cvCreateMat</A>).
</DD></DL>
<P>函数 <A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvCreateMatHeader">cvCreateMatHeader</A>
分配新的矩阵头并且返回指向它的指针. 矩阵数据可被进一步的分配,使用<A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvCreateData">cvCreateData</A>
或通过 <A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvSetData">cvSetData</A>明确的分配数据.
</P>
<HR>
<H3><A name=decl_cvReleaseMat>ReleaseMat</A></H3>
<P class=Blurb>删除矩阵</P><PRE>void cvReleaseMat( CvMat** 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_cvReleaseMat">cvReleaseMat</A>
缩减矩阵数据参考计数并且释放矩阵头 :</P><PRE> if( *mat )
cvDecRefData( *mat );
cvFree( (void**)mat );
</PRE>
<HR>
<H3><A name=decl_cvInitMatHeader>InitMatHeader</A></H3>
<P class=Blurb>初始化矩阵头</P><PRE>CvMat* cvInitMatHeader( CvMat* mat, int rows, int cols, int type,
void* data=NULL, int step=CV_AUTOSTEP );
</PRE>
<P>
<DL>
<DT>mat
<DD>指针指向要被初始化的矩阵头.
<DT>rows
<DD>矩阵的行数.
<DT>cols
<DD>矩阵的列数.
<DT>type
<DD>矩阵元素类型.
<DT>data
<DD>可选的,将指向数据指针分配给矩阵头.
<DT>step
<DD>排列后的数据的整个行宽,默认状态下,使用STEP的最小可能值。例如假定矩阵的行与行之间无隙 </DD></DL>
<P>函数 <A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvInitMatHeader">cvInitMatHeader</A>
初始化已经分配了的 <A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_CvMat">CvMat</A>
结构. 它可以被OpenCV矩阵函数用于处理原始数据。
<P>例如, 下面的代码计算通用数组格式存贮的数据的矩阵乘积. </P>
<P><FONT color=blue size=4>计算两个矩阵的积</FONT></P><PRE> double a[] = { 1, 2, 3, 4
5, 6, 7, 8,
9, 10, 11, 12 };
double b[] = { 1, 5, 9,
2, 6, 10,
3, 7, 11,
4, 8, 12 };
double c[9];
CvMat Ma, Mb, Mc ;
cvInitMatHeader( &Ma, 3, 4, CV_64FC1, a );
cvInitMatHeader( &Mb, 4, 3, CV_64FC1, b );
cvInitMatHeader( &Mc, 3, 3, CV_64FC1, c );
cvMatMulAdd( &Ma, &Mb, 0, &Mc );
// c 数组存贮 a(3x4) 和 b(4x3) 矩阵的积
</PRE>
<HR>
<H3><A name=decl_cvMat>Mat</A></H3>
<P class=Blurb>初始化矩阵的头(轻磅变量)</P><PRE>CvMat cvMat( int rows, int cols, int type, void* data=NULL );
</PRE>
<P>
<DL>
<DT>rows
<DD>矩阵行数
<DT>cols
<DD>列数.
<DT>type
<DD>元素类型(见CreateMat).
<DT>data
<DD>可选的分配给矩阵头的数据指针 . </DD></DL>
<P>函数 <A
href="http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cxcore_chinese.htm#decl_cvMat">cvMat</A>
是个一快速内连函数,替代函数 <A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -