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

📄 opencvref_cxcore.cn.htm

📁 opencv 中文文档 关于opencv 的所有函数
💻 HTM
📖 第 1 页 / 共 5 页
字号:
  </dt><dd>矩阵列数.   </dd><dt>type   </dt><dd>矩阵元素类型(见 <a href="#decl_cvCreateMat">cvCreateMat</a>). </dd></dl>    <p>函数 <a href="#decl_cvCreateMatHeader">cvCreateMatHeader</a> 分配新的矩阵头并且返回指向它的指针.     矩阵数据可被进一步的分配,使用<a href="#decl_cvCreateData">cvCreateData</a> 或通过 <a href="#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></p><dl>  <dt>mat   </dt><dd>双指针指向矩阵. </dd></dl><p>函数<a href="#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></p><dl>  <dt>mat   </dt><dd>指针指向要被初始化的矩阵头.   </dd><dt>rows   </dt><dd>矩阵的行数.   </dd><dt>cols   </dt><dd>矩阵的列数.   </dd><dt>type   </dt><dd>矩阵元素类型.   </dd><dt>data   </dt><dd>可选的,将指向数据指针分配给矩阵头.   </dd><dt>step   </dt><dd>排列后的数据的整个行宽,默认状态下,使用STEP的最小可能值。例如假定矩阵的行与行之间无隙 </dd></dl><p>函数 <a href="#decl_cvInitMatHeader">cvInitMatHeader</a> 初始化已经分配了的 <a href="#decl_CvMat">CvMat</a> 结构. 它可以被OpenCV矩阵函数用于处理原始数据。     </p><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( &amp;Ma, 3, 4, CV_64FC1, a );   cvInitMatHeader( &amp;Mb, 4, 3, CV_64FC1, b );   cvInitMatHeader( &amp;Mc, 3, 3, CV_64FC1, c );   cvMatMulAdd( &amp;Ma, &amp;Mb, 0, &amp;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></p><dl>  <dt>rows   </dt><dd>矩阵行数   </dd><dt>cols   </dt><dd>列数.   </dd><dt>type   </dt><dd>元素类型(见CreateMat).   </dd><dt>data   </dt><dd>可选的分配给矩阵头的数据指针 . </dd></dl>    <p>函数 <a href="#decl_cvMat">cvMat</a> 是个一快速内连函数,替代函数 <a href="#decl_cvInitMatHeader">cvInitMatHeader</a>. 也就是说他相当于: </p><pre>     CvMat mat;     cvInitMatHeader( &amp;mat, rows, cols, type, data, CV_AUTOSTEP );</pre>    <hr><h3><a name="decl_cvCloneMat">CloneMat</a></h3><p class="Blurb">创建矩阵拷贝</p><pre>CvMat* cvCloneMat( const CvMat* mat );</pre><p></p><dl>  <dt>mat   </dt><dd>输入矩阵. </dd></dl><p>函数 <a href="#decl_cvCloneMat">cvCloneMat</a> 创建输入矩阵的一个拷贝并且返回 该矩阵的指针. </p>    <hr><h3><a name="decl_cvCreateMatND">CreateMatND</a></h3><p class="Blurb">创建多维密集数组</p><pre>CvMatND* cvCreateMatND( int dims, const int* sizes, int type );</pre><p></p><dl>  <dt>dims   </dt><dd>数组维数. 但不许超过 CV_MAX_DIM (默认=32,但这个默认值可能在编译时被改变 )的定义       </dd><dt>sizes   </dt><dd>数组的维大小.   </dd><dt>type   </dt><dd>数组元素类型. 与 <a href="#decl_CvMat">CvMat</a>相同 </dd></dl>    <p>函数<a href="#decl_cvCreateMatND">cvCreateMatND</a> 分配头给多维密集数组并且分配下面的数据,返回指向被创建数组的指针 . 是下列的缩减形式:</p><pre>    CvMatND* mat = cvCreateMatNDHeader( dims, sizes, type );    cvCreateData( mat );</pre>    <p>矩阵按行存贮. 所有的行以4个字节排列。. </p>    <hr><h3><a name="decl_cvCreateMatNDHeader">CreateMatNDHeader</a></h3><p class="Blurb">创建新的数组头</p><pre>CvMatND* cvCreateMatNDHeader( int dims, const int* sizes, int type );</pre><p></p><dl>  <dt>dims   </dt><dd>数组维数.   </dd><dt>sizes   </dt><dd>维大小.   </dd><dt>type   </dt><dd>数组元素类型. 与 <a href="#decl_CvMat">CvMat</a>相同 </dd></dl>    <p>函数<a href="#decl_cvCreateMatND">cvCreateMatND</a> 分配头给多维密集数组。数组数据可以用 <a href="#decl_cvCreateData">cvCreateData</a> 进一步的被分配或利用<a href="#decl_cvSetData">cvSetData</a>由用户明确指定. </p><hr><h3><a name="decl_cvReleaseMatND">ReleaseMatND</a></h3><p class="Blurb">删除多维数组</p><pre>void cvReleaseMatND( CvMatND** mat );</pre><p></p><dl>  <dt>mat   </dt><dd>指向数组的双指针. </dd></dl><p>函数 <a href="#decl_cvReleaseMatND">cvReleaseMatND</a> 缩减数组参考计数并释放数组头:</p><pre>    if( *mat )        cvDecRefData( *mat );    cvFree( (void**)mat );</pre>    <hr><h3><a name="decl_cvInitMatNDHeader">InitMatNDHeader</a></h3><p class="Blurb">初始化多维数组头</p><pre>CvMatND* cvInitMatNDHeader( CvMatND* mat, int dims, const int* sizes, int type, void* data=NULL );</pre><p></p><dl>  <dt>mat   </dt><dd>指向要被出初始化的数组头指针.   </dd><dt>dims   </dt><dd>数组维数.   </dd><dt>sizes   </dt><dd>维大小.   </dd><dt>type   </dt><dd>数组元素类型. 与 <a href="#decl_CvMat">CvMat</a>相同       </dd><dt>data   </dt><dd>可选的分配给矩阵头的数据指针. </dd></dl><p>函数 <a href="#decl_cvInitMatNDHeader">cvInitMatNDHeader</a> 初始化 用户指派的<a href="#decl_CvMatND">CvMatND</a> 结构. </p>    <hr><h3><a name="decl_cvCloneMatND">CloneMatND</a></h3><p class="Blurb">创建多维数组的完整拷贝</p><pre>CvMatND* cvCloneMatND( const CvMatND* mat );</pre><p></p><dl>  <dt>mat   </dt><dd>输入数组 </dd></dl><p>函数 <a href="#decl_cvCloneMatND">cvCloneMatND</a> 创建输入数组的拷贝并返回指针. </p>    <hr><h3><a name="decl_cvDecRefData">DecRefData</a></h3><p class="Blurb">缩减数组数据的参考计数</p><pre>void cvDecRefData( CvArr* arr );</pre><p></p><dl>  <dt>arr   </dt><dd>数组头. </dd></dl><p>函数 <a href="#decl_cvDecRefData">cvDecRefData</a> 缩减<a href="#decl_CvMat">CvMat</a> 或<a href="#decl_CvMatND">CvMatND</a>     数据的参考计数,如参考计数指针非NULL并且计数到0就删除数据,在当前的执行中只有当数据是用<a href="#decl_cvCreateData">cvCreateData</a> 分配的参考计算才会是非NULL,换句话说 :<br>使用<a href="#decl_cvSetData">cvSetData</a>指派外部数据给头<br>矩阵头代表部分大的矩阵或图像<br>矩阵头是从图像头或N维矩阵头转换过来的。 <br>参考计数如果被设置成NULL就不会被缩减. 无论数据是否被删除,数据指针和参考计数指针都将被这个函数清空。 </p>    <hr><h3><a name="decl_cvIncRefData">IncRefData</a></h3><p class="Blurb">增加数组数据的参考计数</p><pre>int cvIncRefData( CvArr* arr );</pre><p></p><dl>  <dt>arr   </dt><dd>数组头. </dd></dl><p>函数 <a href="#decl_cvIncRefData">cvIncRefData</a> 增加 <a href="#decl_CvMat">CvMat</a> 或 <a href="#decl_CvMatND">CvMatND</a>     数据参考计数,如果参考计数非空返回新的计数值 否则返回0。 </p>    <hr><h3><a name="decl_cvCreateData">CreateData</a></h3><p class="Blurb">分配数组数据</p><pre>void cvCreateData( CvArr* arr );</pre><p></p><dl>  <dt>arr   </dt><dd>数组头. </dd></dl><p>函数 <a href="#decl_cvCreateData">cvCreateData</a> 分配图像,矩阵或多维数组数据.     对于矩阵类型使用OpenCV的分配函数,对于     IplImage类型如果<code>CV_TURN_ON_IPL_COMPATIBILITY没有被调用也是可以使用这种方法的反之使用</code> IPL     函数分配数据 </p><hr><h3><a name="decl_cvReleaseData">ReleaseData</a></h3><p class="Blurb">释放数组数据</p><pre>void cvReleaseData( CvArr* arr );</pre><dl>  <dt>arr   </dt><dd>数组头 </dd></dl><p>函数<a href="#decl_cvReleaseData">cvReleaseData</a> 释放数组数据. 对于 <a href="#decl_CvMat">CvMat</a> 或 <a href="#decl_CvMatND">CvMatND</a> 结构只需调用     cvDecRefData(), 也就是说这个函数不能删除外部数据。见 <a href="#decl_cvCreateData">cvCreateData</a>. </p><hr><h3><a name="decl_cvSetData">SetData</a></h3><p class="Blurb">指派用户数据给数组头</p><pre>void cvSetData( CvArr* arr, void* data, int step );</pre><p></p><dl>  <dt>arr   </dt><dd>数组头.   </dd><dt>data   </dt><dd>用户数据.   </dd><dt>step   </dt><dd>整行字节长. </dd></dl><p>函数<a href="#decl_cvSetData">cvSetData</a> 指派用记数据给数组头. 头应该已经使用     cvCreate*Header, cvInit*Header 或 <a href="#decl_cvMat">cvMat</a> (对于矩阵)初始化过.     </p><hr><h3><a name="decl_cvGetRawData">GetRawData</a></h3><p class="Blurb">返回组数的底层信息</p><pre>void cvGetRawData( const CvArr* arr, uchar** data,                   int* step=NULL, CvSize* roi_size=NULL );</pre><p></p><dl>  <dt>arr   </dt><dd>数组头.   </dd><dt>data   </dt><dd>输出指针,指针指向整个图像的结构或ROI   </dd><dt>step   </dt><dd>输出行字节长   </dd><dt>roi_size   </dt><dd>输出ROI尺寸 </dd></dl><p>函数 <a href="#decl_cvGetRawData">cvGetRawData</a> 添充给输出变量数组的底层信息。所有的输出参数是可选的 ,     因此这些指针可设为NULL. 如果数组是设置了ROI的 <code>IplImage</code> 结构, ROI参数被返回。 </p>    <p>接下来的例子展示怎样去接近数组元素。</p><p><font color="blue" size="4">使用 GetRawData 计算单通道浮点数组的元素绝对值.</font> </p><pre>    float* data;    int step;    CvSize size;    int x, y;    cvGetRawData( array, (uchar**)&amp;data, &amp;step, &amp;size );    step /= sizeof(data[0]);    for( y = 0; y &lt; size.height; y++, data += step )        for( x = 0; x &lt; size.width; x++ )            data[x] = (float)fabs(data[x]);</pre>    <hr><h3><a name="decl_cvGetMat">GetMat</a></h3><p class="Blurb">从不确定数组返回矩阵头</p><pre>CvMat* cvGetMat( const CvArr* arr, CvMat* header, int* coi=NULL, int allowND=0 );</pre><p></p><dl>  <dt>arr   </dt><dd>输入数组.   </dd><dt>header   </dt><dd>指向 <a href="#decl_CvMat">CvMat</a>结构的指针,作为临时缓存 .       </dd><dt>coi   </dt><dd>可选的输出参数,用于输出COI.   </dd><dt>allowND   </dt><dd>如果非0,函数就接收多维密集数组 (CvMatND*)并且返回 2D (如果 CvMatND 是二维的)或 1D 矩阵(当 CvMatND       是一维或多于二维). 数组必须是连续的. </dd></dl>    <p>函数 <a href="#decl_cvGetMat">cvGetMat</a>从输入的数组生成矩阵头,输入的数组可以是 - <a href="#decl_CvMat">CvMat</a>结构,&nbsp; <code>IplImage结构</code> 或多维密集数组 <a href="#decl_CvMatND*">CvMatND*</a> (后者只有当 <code>allowND != 0时才可以使用</code>) .     如果是矩阵函数只是返回指向矩阵的指针.如果是 <code>IplImage*</code> 或 <a href="#decl_CvMatND*">CvMatND*</a> 函数用当前图像的ROI初始化头结构并且返回指向这个临时结构的指针。因为<a href="#decl_CvMat">CvMat</a>不支持COI,所以他们的返回结果是不同的. </p><p>这个函数提供了一个简单的方法,用同一代码处理 <code>IplImage</code> 和 <a href="#decl_CvMat">CvMat</a>二种数据类型。这个函数的反向转换可以用 <a href="#decl_cvGetImage">cvGetImage</a>将 <a href="#decl_CvMat">CvMat</a> 转换成     <code>IplImage</code> . </p>    

⌨️ 快捷键说明

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