📄 opencv 图像处理和计算机视觉参考手册.htm
字号:
<TR>
<TD><FONT color=#ff0000 size=5>
<P align=center>R</FONT></P></TD>
<TD><FONT color=#008000 size=5>
<P align=center>G</FONT></P></TD>
<TD><FONT color=#ff0000 size=5>
<P align=center>R</FONT></P></TD>
<TD><FONT color=#008000 size=5>
<P align=center>G</FONT></P></TD>
<TD><FONT color=#ff0000 size=5>
<P align=center>R</FONT></P></TD></TR>
<TR>
<TD><FONT color=#008000 size=5>
<P align=center>G</FONT></P></TD>
<TD bgColor=pink><FONT color=#0000ff size=5>
<P align=center>B</FONT></P></TD>
<TD bgColor=pink><FONT color=#008000 size=5>
<P align=center>G</FONT></P></TD>
<TD><FONT color=#0000ff size=5>
<P align=center>B</FONT></P></TD>
<TD><FONT color=#008000 size=5>
<P align=center>G</FONT></P></TD></TR>
<TR>
<TD><FONT color=#ff0000 size=5>
<P align=center>R</FONT></P></TD>
<TD><FONT color=#008000 size=5>
<P align=center>G</FONT></P></TD>
<TD><FONT color=#ff0000 size=5>
<P align=center>R</FONT></P></TD>
<TD><FONT color=#008000 size=5>
<P align=center>G</FONT></P></TD>
<TD><FONT color=#ff0000 size=5>
<P align=center>R</FONT></P></TD></TR>
<TR>
<TD><FONT color=#008000 size=5>
<P align=center>G</FONT></P></TD>
<TD><FONT color=#0000ff size=5>
<P align=center>B</FONT></P></TD>
<TD><FONT color=#008000 size=5>
<P align=center>G</FONT></P></TD>
<TD><FONT color=#0000ff size=5>
<P align=center>B</FONT></P></TD>
<TD><FONT color=#008000 size=5>
<P align=center>G</FONT></P></TD></TR>
<TR>
<TD><FONT color=#ff0000 size=5>
<P align=center>R</FONT></P></TD>
<TD><FONT color=#008000 size=5>
<P align=center>G</FONT></P></TD>
<TD><FONT color=#ff0000 size=5>
<P align=center>R</FONT></P></TD>
<TD><FONT color=#008000 size=5>
<P align=center>G</FONT></P></TD>
<TD><FONT color=#ff0000 size=5>
<P align=center>R</FONT></P></TD></TR>
<TR>
<TD><FONT color=#008000 size=5>
<P align=center>G</FONT></P></TD>
<TD><FONT color=#0000ff size=5>
<P align=center>B</FONT></P></TD>
<TD><FONT color=#008000 size=5>
<P align=center>G</FONT></P></TD>
<TD><FONT color=#0000ff size=5>
<P align=center>B</FONT></P></TD>
<TD><FONT color=#008000 size=5>
<P align=center>G</FONT></P></TD></TR></TBODY></TABLE>
<P>对象素输出的RGB分量由该象素的1、2或者4邻域中具有相同颜色的点插值得到。以上的模式可以通过向左或者向上平移一个像素点来作一些修改。转换常量CV_BayerC1C22{RGB|RGB}中的两个字母C1和C2表示特定的模式类型:颜色分量分别来自于第二行,第二和第三列。比如说,上述的模式具有很流行的"BG"类型。</P></LI></UL>
<HR>
<H3><A name=decl_cvThreshold>Threshold</A></H3>
<P class=Blurb>对数组元素进行固定阈值操作</P><PRE>void cvThreshold( const CvArr* src, CvArr* dst, double threshold,
double max_value, int threshold_type );
</PRE>
<P>
<DL>
<DT>src
<DD>原始数组 (单通道, 8-比特 of 32-比特 浮点数).
<DT>dst
<DD>输出数组,必须与 <CODE>src</CODE> 的类型一致,或者为 8-比特.
<DT>threshold
<DD>阈值
<DT>max_value
<DD>使用 <CODE>CV_THRESH_BINARY</CODE> 和 <CODE>CV_THRESH_BINARY_INV</CODE> 的最大值.
<DT>threshold_type
<DD>阈值类型 (见讨论) </DD></DL>
<P>函数 <A
href="http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_cv.cn.htm#decl_cvThreshold">cvThreshold</A>
对单通道数组应用固定阈值操作。该函数的典型应用是对灰度图像进行阈值操作得到二值图像。(<A
href="http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_cxcore.htm#decl_cvCmpS">cvCmpS</A>
也可以达到此目的) 或者是去掉噪声,例如过滤很小或很大象素值的图像点。本函数支持的对图像取阈值的方法由 <CODE>threshold_type
确定</CODE>:</P><PRE>threshold_type=CV_THRESH_BINARY:
dst(x,y) = max_value, if src(x,y)>threshold
0, otherwise
threshold_type=CV_THRESH_BINARY_INV:
dst(x,y) = 0, if src(x,y)>threshold
max_value, otherwise
threshold_type=CV_THRESH_TRUNC:
dst(x,y) = threshold, if src(x,y)>threshold
src(x,y), otherwise
threshold_type=CV_THRESH_TOZERO:
dst(x,y) = src(x,y), if (x,y)>threshold
0, otherwise
threshold_type=CV_THRESH_TOZERO_INV:
dst(x,y) = 0, if src(x,y)>threshold
src(x,y), otherwise
</PRE>
<P>下面是图形化的阈值描述:</P>
<P><IMG src="OpenCV 图像处理和计算机视觉参考手册.files/threshold.png" align=center> </P>
<HR>
<H3><A name=decl_cvAdaptiveThreshold>AdaptiveThreshold</A></H3>
<P class=Blurb>自适应阈值方法</P><PRE>void cvAdaptiveThreshold( const CvArr* src, CvArr* dst, double max_value,
int adaptive_method=CV_ADAPTIVE_THRESH_MEAN_C,
int threshold_type=CV_THRESH_BINARY,
int block_size=3, double param1=5 );
</PRE>
<P>
<DL>
<DT>src
<DD>输入图像.
<DT>dst
<DD>输出图像.
<DT>max_value
<DD>使用 <CODE>CV_THRESH_BINARY</CODE> 和 <CODE>CV_THRESH_BINARY_INV</CODE> 的最大值.
<DT>adaptive_method
<DD>自适应阈值算法使用:<CODE>CV_ADAPTIVE_THRESH_MEAN_C</CODE> 或
<CODE>CV_ADAPTIVE_THRESH_GAUSSIAN_C</CODE> (见讨论).
<DT>threshold_type
<DD>取阈值类型:必须是下者之一
<UL>
<LI><CODE>CV_THRESH_BINARY,</CODE>
<LI><CODE>CV_THRESH_BINARY_INV</CODE> </LI></UL>
<DT>block_size
<DD>用来计算阈值的象素邻域大小: 3, 5, 7, ...
<DT>param1
<DD>与方法有关的参数。对方法 <CODE>CV_ADAPTIVE_THRESH_MEAN_C</CODE> 和
<CODE>CV_ADAPTIVE_THRESH_GAUSSIAN_C</CODE>, 它是一个从均值或加权均值提取的常数(见讨论), 尽管它可以是负数。
</DD></DL>
<P>函数 <A
href="http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_cv.cn.htm#decl_cvAdaptiveThreshold">cvAdaptiveThreshold</A>
将灰度图像变换到二值图像,采用下面公式:</P><PRE>threshold_type=<CODE>CV_THRESH_BINARY</CODE>:
dst(x,y) = max_value, if src(x,y)>T(x,y)
0, otherwise
threshold_type=<CODE>CV_THRESH_BINARY_INV</CODE>:
dst(x,y) = 0, if src(x,y)>T(x,y)
max_value, otherwise
</PRE>
<P>其中 T<SUB>I</SUB> 是为每一个象素点单独计算的阈值</P>
<P>对方法 CV_ADAPTIVE_THRESH_MEAN_C,先求出块中的均值,再减掉param1。</P>
<P>对方法 CV_ADAPTIVE_THRESH_GAUSSIAN_C ,先求出块中的加权和(gaussian), 再减掉param1。</P>
<HR>
<H2><A name=cv_imgproc_pyramids>金字塔及其应用</A></H2>
<HR>
<H3><A name=decl_cvPyrDown>PyrDown</A></H3>
<P class=Blurb>图像的下采样</P><PRE>void cvPyrDown( const CvArr* src, CvArr* dst, int filter=CV_GAUSSIAN_5x5 );
</PRE>
<P>
<DL>
<DT>src
<DD>输入图像.
<DT>dst
<DD>输出图像, 宽度和高度应是输入图像的一半
<DT>filter
<DD>卷积滤波器的类型,目前仅支持 <CODE>CV_GAUSSIAN_5x5</CODE> </DD></DL>
<P>函数 <A
href="http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_cv.cn.htm#decl_cvPyrDown">cvPyrDown</A>
使用 Gaussian 金字塔分解对输入图像向下采样。首先它对输入图像用指定滤波器进行卷积,然后通过拒绝偶数的行与列来下采样图像。</P>
<HR>
<H3><A name=decl_cvPyrUp>PyrUp</A></H3>
<P class=Blurb>图像的上采样</P><PRE>void cvPyrUp( const CvArr* src, CvArr* dst, int filter=CV_GAUSSIAN_5x5 );
</PRE>
<DL>
<DT>src
<DD>输入图像.
<DT>dst
<DD>输出图像, 宽度和高度应是输入图像的2倍
<DT>filter
<DD>卷积滤波器的类型,目前仅支持 <CODE>CV_GAUSSIAN_5x5</CODE> </DD></DL>
<P>函数 <A
href="http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_cv.cn.htm#decl_cvPyrUp">cvPyrUp</A>
使用Gaussian 金字塔分解对输入图像向上采样。首先通过在图像中插入 0
偶数行和偶数列,然后对得到的图像用指定的滤波器进行高斯卷积,其中滤波器乘以4做差值。所以输出图像是输入图像的 4 倍大小。(<A
href="http://www.assuredigit.com/">hunnish</A>: 原理不清楚,尚待探讨)</P>
<HR>
<H3><A name=decl_cvPyrSegmentation>PyrSegmentation</A></H3>
<P class=Blurb>用金字塔实现图像分割</P><PRE>void cvPyrSegmentation( IplImage* src, IplImage* dst,
CvMemStorage* storage, CvSeq** comp,
int level, double threshold1, double threshold2 );
</PRE>
<P>
<DL>
<DT>src
<DD>输入图像.
<DT>dst
<DD>输出图像.
<DT>storage
<DD>Storage: 存储连通部件的序列结果
<DT>comp
<DD>分割部件的输出序列指针 components.
<DT>level
<DD>建立金字塔的最大层数
<DT>threshold1
<DD>建立连接的错误阈值
<DT>threshold2
<DD>分割簇的错误阈值 </DD></DL>
<P>函数 <A
href="http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_cv.cn.htm#decl_cvPyrSegmentation">cvPyrSegmentation</A>
实现了金字塔方法的图像分割。金字塔建立到 <CODE>level</CODE> 指定的最大层数。如果
<CODE>p(c(a),c(b))<threshold1</CODE>,则在层 i 的象素点 a 和它的相邻层的父亲象素 b 之间的连接被建立起来,
<DIV>
<P>定义好连接部件后,它们被加入到某些簇中。如果<CODE>p(c(A),c(B))<threshold2</CODE><CODE>,</CODE>则任何两个分割
A 和 B 属于同一簇。</P>
<DIV>
<P>如果输入图像只有一个通道,那么</P>
<DIV><CODE> p(c¹,c²)=|c¹-c²|</CODE>.
<P>如果输入图像有单个通道(红、绿、兰),那么 </P>
<DIV><CODE>
p(c¹,c²)=0,3·(c¹<SUB>r</SUB>-c²<SUB>r</SUB>)+0,59·(c¹<SUB>g</SUB>-c²<SUB>g</SUB>)+0,11·(c¹<SUB>b</SUB>-c²<SUB>b</SUB>)
</CODE>.
<P>每一个簇可以有多个连接部件。</P>
<DIV>图像 <CODE>src</CODE> 和 <CODE>dst</CODE> 应该是 8-比特、单通道 或 3-通道图像,且大小一样
<HR>
<H2><A name=cv_imgproc_ccomp>连接部件</A></H2>
<HR>
<H3><A name=decl_CvConnectedComp>CvConnectedComp</A></H3>
<P class=Blurb>连接部件</P><PRE> typedef struct CvConnectedComp
{
double area; /* 连通域的面积 */
float value; /* 分割域的灰度缩放值 */
CvRect rect; /* 分割域的 ROI */
} CvConnectedComp;
</PRE>
<HR>
<H3><A name=decl_cvFloodFill>FloodFill</A></H3>
<P class=Blurb>用指定颜色填充一个连接域</P><PRE>void cvFloodFill( CvArr* image, CvPoint seed_point, CvScalar new_val,
CvScalar lo_diff=cvScalarAll(0), CvScalar up_diff=cvScalarAll(0),
CvConnectedComp* comp=NULL, int flags=4, CvArr* mask=NULL );
#define CV_FLOODFILL_FIXED_RANGE (1 << 16)
#define CV_FLOODFILL_MASK_ONLY (1 << 17)
</PRE>
<P>
<DL>
<DT>image
<DD>输入的 1- 或 3-通道, 8-比特或浮点数图像。输入的图像将被函数的操作所改变,除非你选则 CV_FLOODFILL_MASK_ONLY 选项
(见
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -