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

📄 cv中文参考手册.htm

📁 Opencv的中文参考手册
💻 HTM
📖 第 1 页 / 共 5 页
字号:
            m[4] = m[0];
            m[5] = h*0.5f;

            cvGetQuadrangleSubPix( src, dst, &M, 1, cvScalarAll(0));

            cvNamedWindow( "dst", 1 );
            cvShowImage( "dst", dst );

            if( cvWaitKey(5) == 27 )
                break;

            angle = (angle + delta) % 360;
        }
    }
    return 0;
}
</pre>


<hr><h3><a name="decl_cvResize">Resize</a></h3>
<p class="Blurb"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Helvetica; mso-hansi-font-family: Helvetica">图像大小变换</span></p>
<pre>
void cvResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR );
</pre><p><dl>
<dt>src<dd>输入图像.
<dt>dst<dd>输出图像.
<dt>interpolation<dd>差值方法:<ul>
    <li>CV_INTER_NN - 最近邻差值,                
    <li>CV_INTER_LINEAR - 双线性差值 (缺省使用)                
    <li>CV_INTER_AREA -   
      使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于           
      <code>CV_INTER_NN</span></code> 
      方法..                
    <li>CV_INTER_CUBIC - 立方差值.                
    </ul>
</dl><p>
函数 <a href="#decl_cvResize">cvResize</a> 将图像 <code>src</span></code>                
改变尺寸得到与 <code>dst 同样大小。</span></code>若设定                 
ROI,函数将按常规支持 ROI.</p>                

<hr><h3><a name="decl_cvWarpAffine">WarpAffine</a></h3>
<p class="Blurb"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Helvetica; mso-hansi-font-family: Helvetica">对图像做仿射变换</span></p>
<pre>
void cvWarpAffine( const CvArr* src, CvArr* dst, const CvMat* map_matrix,
                   int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,
                   CvScalar fillval=cvScalarAll(0) );
</pre><p><dl>
<dt>src<dd>输入图像.
<dt>dst<dd>输出图像.
<dt>map_matrix<dd>2×3 变换矩阵                   
<dt>flags<dd>插值方法和以下开关选项的组合:<ul>
    <li>CV_WARP_FILL_OUTLIERS - 填充所有缩小图像的象素。如果部分象素落在输入图像的边界外,那么它们的值设定为           
      <code>fillval</code>.
    <li>CV_WARP_INVERSE_MAP - 指定 <code>matrix</span></code>                
      是输出图像到输入图像的反变换,因此可以直接用来做象素差值。否则,                 
      函数从 <code>map_matrix 得到反变换。</code>                
    </ul>
<dt>fillval<dd>用来填充边界外面的值
</dl><p>
函数 <a href="#decl_cvWarpAffine">cvWarpAffine</a>                 
利用下面指定的矩阵变换输入图像:</p>                
<pre>
dst(x&amp;apos;,y&amp;apos;)&lt;-src(x,y)
如果没有指定 CV_WARP_INVERSE_MAP , (x&amp;apos;,y&amp;apos;)<sup>T</sup>=map_matrix&#8226;(x,y,1)<sup>T</sup>+b ,
否则, (x, y)<sup>T</sup>=map_matrix&#8226;(x&amp;apos;,y&amp;apos,1)<sup>T</sup>+b
</pre>
<p>
函数与 <a href="#decl_cvGetQuadrangleSubPix">cvGetQuadrangleSubPix</a>                 
类似,但是不完全相同。 <a href="#decl_cvWarpAffine">cvWarpAffine</a>                 
 要求输入和输出图像具有同样的数据类型,有更大的资源开销(因此对小图像不太合适)而且输出图像的部分可以保留不变。而                 
<a href="#decl_cvGetQuadrangleSubPix">cvGetQuadrangleSubPix</a> 
可以精确地从8位图像中提取四边形到浮点数缓存区中,具有比较小的系统开销,而且总是全部改变输出图像的内容。                
</p>
<p>
要变换稀疏矩阵,使用 cxcore 中的函数 <a href="#decl_cvTransform">cvTransform</a>                 
。</p>                


<hr><h3><a name="decl_cv2DRotationMatrix">2DRotationMatrix</a></h3>
<p class="Blurb"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Helvetica; mso-hansi-font-family: Helvetica">计算二维旋转的仿射变换矩阵</span></p>
<pre>
CvMat* cv2DRotationMatrix( CvPoint2D32f center, double angle,
                           double scale, CvMat* map_matrix );
</pre><p><dl>
<dt>center<dd>输入图像的旋转中心坐标
<dt>angle<dd>旋转角度(度)。正值表示逆时针旋转(坐标原点假设在左上角).
<dt>scale<dd>各项同性的尺度因子
<dt>map_matrix<dd>输出 2×3 矩阵的指针                   
</dl><p>
函数 <a href="#decl_cv2DRotationMatrix">cv2DRotationMatrix</a>                 
计算矩阵:</p>                
<pre>
[  α  β  |  (1-α)*center.x - β*center.y ]
[ -β  α  |  β*center.x + (1-α)*center.y ]

where α=scale*cos(angle), β=scale*sin(angle)
</pre>
<p>该变换并不改变原始旋转中心点的坐标,如果这不是操作目的,则可以通过调整平移量改变其坐标(译者注:通过简单的推导可知,放射变换的实现是首先将旋转中心置为坐标原点,再进行旋转和尺度变换,最后重新将坐标原点设定为输入图像的左上角,这里的平移量是center.x,   
center.y).</p>             


<hr><h3><a name="decl_cvWarpPerspective">WarpPerspective</a></h3>
<p class="Blurb"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Helvetica; mso-hansi-font-family: Helvetica">对图像进行透视变换</span></p>
<pre>
void cvWarpPerspective( const CvArr* src, CvArr* dst, const CvMat* map_matrix,
                        int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,
                        CvScalar fillval=cvScalarAll(0) );
</pre><p><dl>
<dt>src<dd>输入图像.
<dt>dst<dd>输出图像.
<dt>map_matrix<dd>3×3 变换矩阵                   
<dt>flags<dd>插值方法和以下开关选项的组合:<ul>
    <li>CV_WARP_FILL_OUTLIERS - 填充所有缩小图像的象素。如果部分象素落在输入图像的边界外,那么它们的值设定为           
      <code>fillval</code>.
    <li>CV_WARP_INVERSE_MAP - 指定 <code>matrix</span></code>                
      是输出图像到输入图像的反变换,因此可以直接用来做象素差值。否则,                 
      函数从 <code>map_matrix 得到反变换。</code>                
    </ul>
<dt>fillval<dd>用来填充边界外面的值
</dl><p>
函数 <a href="#decl_cvWarpPerspective">cvWarpPerspective</a>                 
利用下面指定矩阵变换输入图像:</p>                
<pre>
dst(x&amp;apos;,y&amp;apos;)&lt;-src(x,y)
若指定 CV_WARP_INVERSE_MAP, (tx&amp;apos;,ty&amp;apos;,t)<sup>T</sup>=map_matrix&#8226;(x,y,1)<sup>T</sup>+b
否则, (tx, ty, t)<sup>T</sup>=map_matrix&#8226;(x&amp;apos;,y&amp;apos,1)<sup>T</sup>+b
</pre>
<p>
要变换稀疏矩阵,使用 cxcore 中的函数 <a href="#decl_cvTransform">cvTransform</a>                 
。</p>                


<hr><h3><a name="decl_cvWarpPerspectiveQMatrix">WarpPerspectiveQMatrix</a></h3>
<p class="Blurb"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Helvetica; mso-hansi-font-family: Helvetica">用</span>4<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Helvetica; mso-hansi-font-family: Helvetica">个对应点计算透视变换矩阵</span></p>
<pre>
CvMat* cvWarpPerspectiveQMatrix( const CvPoint2D32f* src,
                                 const CvPoint2D32f* dst,
                                 CvMat* map_matrix );
</pre><p><dl>
<dt>src<dd>输入图像的四边形的4个点坐标
<dt>dst<dd>输出图像的对应四边形的4个点坐标
<dt>map_matrix<dd>输出的 3×3 矩阵                   
</dl><p>
函数 <a href="#decl_cvWarpPerspectiveQMatrix">cvWarpPerspectiveQMatrix</a>                 
计算透视变换矩阵,使得:</p>                
<pre>
(t<sub>i</sub>x'<sub>i</sub>,t<sub>i</sub>y'<sub>i</sub>,t<sub>i</sub>)<sup>T</sup>=matrix&#8226;(x<sub>i</sub>,y<sub>i</sub>,1)<sup>T</sup>
</pre>
<p>其中 <code>dst(i)=(x'<sub>i</sub>,y'<sub>i</sub>), src(i)=(x<sub>i</sub>,y<sub>i</sub>), i=0..3</code>.</p>   


<hr><h2><a name="cv_imgproc_morphology">形态学操作</a></h2>

<hr><h3><a name="decl_cvCreateStructuringElementEx">CreateStructuringElementEx</a></h3>
<p class="Blurb"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Helvetica; mso-hansi-font-family: Helvetica">创建结构元素</span></p>
<pre>
IplConvKernel* cvCreateStructuringElementEx( int cols, int rows, int anchor_x, int anchor_y,
                                             int shape, int* values=NULL );
</pre><p><dl>
<dt>cols<dd>结构元素的列数目
<dt>rows<dd>结构元素的行数目
<dt>anchor_x<dd>锚点的相对水平偏移量
<dt>anchor_y<dd>锚点的相对垂直便宜量
<dt>shape<dd>结构元素的形状,可以是下列值:
<ul>
<li><code>CV_SHAPE_RECT</code>, 长方形元素;                
<li><code>CV_SHAPE_CROSS</code>, 交错元素 a cross-shaped element;                 
<li><code>CV_SHAPE_ELLIPSE</code>, 椭圆元素;                
<li><code>CV_SHAPE_CUSTOM</code>, 用户自定义元素。这种情况下参数 <code>values</span></code>           
  定义了 mask,即象素的那个邻域必须考虑。                
</ul>
<dt>values<dd> 指向结构元素的指针,它是一个平面数组,表示对元素矩阵逐行扫描。(非零点表示该点属于结构元)。如果指针为空,则表示平面数组中的所有元素都是非零的,即结构元是一个长方形(该参数仅仅当shape参数是                 
  <code>CV_SHAPE_CUSTOM</code> 
  时才予以考虑)。               
</dl><p>
函数 <a href="#decl_cv CreateStructuringElementEx">cv                 
CreateStructuringElementEx</a> 分配和填充结构 <code>IplConvKernel</span></code>,                 
它可作为形态操作中的结构元素。</p>


<hr><h3><a name="decl_cvReleaseStructuringElement">ReleaseStructuringElement</a></h3>
<p class="Blurb"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Helvetica; mso-hansi-font-family: Helvetica">删除结构元素</span></p>
<pre>
void cvReleaseStructuringElement( IplConvKernel** element );
</pre><p><dl>
<dt>element<dd>被删除的结构元素的指针
</dl><p>
函数 <a href="#decl_cvReleaseStructuringElement">cvReleaseStructuringElement</a>                 
释放结构 <code>IplConvKernel 。</span></code>如果                 
<code>*element</span></code> 为 <code>NULL</span></code>,                 
则函数不作用。</p>


<hr><h3><a name="decl_cvErode">Erode</a></h3>
<p class="Blurb"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Helvetica; mso-hansi-font-family: Helvetica">使用任意结构元素腐蚀图像</span></p>
<pre>
void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );
</pre><p><dl>
<dt>src<dd>输入图像.
<dt>dst<dd>输出图像.
<dt>element<dd>用于腐蚀的结构元素。若为 <code>NULL</span></code>,                 
  则使用 3×3 长方形的结构元素                   
<dt>iterations<dd>腐蚀的次数
</dl><p>
函数 <a href="#decl_cvErode">cvErode</a>                 
 对输入图像使用指定的结构元素进行腐蚀,该结构元素决定每个具有最小值象素点的邻域形状:</p>               
<pre>
dst=erode(src,element):  dst(x,y)=min<sub>((x',y') in element)</sub>)src(x+x',y+y')
</pre>
<p>函数可能是本地操作,不需另外开辟存储空间的意思。腐蚀可以重复进行                 
(<code>iterations</span></code>)                 
次. 对彩色图像,每个彩色通道单独处理。</p>                


<hr><h3><a name="decl_cvDilate">Dilate</a></h3>
<p class="Blurb"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Helvetica; mso-hansi-font-family: Helvetica">使用任意结构元素膨胀图像</span></p>
<pre>
void cvDilate( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );
</pre><p><dl>
<dt>src<dd>输入图像.
<dt>dst<dd>输出图像.
<dt>element<dd>用于膨胀的结构元素。若为 <code>NULL</span></code>,                 
  则使用 3×3 长方形的结构元素                   
<dt>iterations<dd>膨胀的次数
</dl><p>
</p>               
<p>
函数 <a href="#decl_cvDilate">cvDilate</a>     
对输入图像使用指定的结构元进行膨胀,该结构决定每个具有最小值象素点的邻域形状:</p>               
<pre>
dst=dilate(src,element):  dst(x,y)=max<sub>((x',y') in element)</sub>)src(x+x',y+y')
</pre>
<p>函数支持(in-place)模式。膨胀可以重复进行                 
(<code>iterations</span></code>)                 
次. 对彩色图像,每个彩色通道单独处理。</p>                


<hr><h3><a name="decl_cvMorphologyEx">MorphologyEx</a></h3>

⌨️ 快捷键说明

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