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

📄 opencv用户手册之图像处理部分:采样、差值与几何变换(中文翻译) cnbie.htm

📁 When I use opencv, I use this very useful paper to begin the study. This is all I searched from the
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0040)http://cnbie.net/print_242587m55385.html -->
<HTML><HEAD><TITLE>OPENCV用户手册之图像处理部分:采样、差值与几何变换(中文翻译) :: CNBIE</TITLE>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<STYLE>.title {
	FLOAT: right; ; WIDTH: expression(document.body.offsetWidth - 550 + 'px')
}
.content {
	FLOAT: right; ; WIDTH: expression(document.body.offsetWidth - 400 + 'px')
}
</STYLE>

<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY>
<DIV style="FLOAT: left; MARGIN-LEFT: 10px; WIDTH: 340px">
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-0139896083561460";
google_ad_width = 336;
google_ad_height = 280;
google_ad_format = "336x280_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = ["003333","870100","336699","000000"];
google_color_bg = ["FFFFFF","FFFFFF","FFFFFF","F0F0F0"];
google_color_link = ["FF0066","0033FF","0000FF","0000FF"];
google_color_url = ["00008B","999999","008000","008000"];
google_color_text = ["000033","FF0099","000000","000000"];
//--></SCRIPT>

<SCRIPT src="OPENCV用户手册之图像处理部分:采样、差值与几何变换(中文翻译)  CNBIE_files/show_ads.js" 
type=text/javascript>
</SCRIPT>

<SCRIPT type=text/javascript><!--
google_ad_client = "pub-0139896083561460";
google_ad_width = 336;
google_ad_height = 280;
google_ad_format = "336x280_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = ["003333","870100","336699","000000"];
google_color_bg = ["FFFFFF","FFFFFF","FFFFFF","F0F0F0"];
google_color_link = ["FF0066","0033FF","0000FF","0000FF"];
google_color_url = ["00008B","999999","008000","008000"];
google_color_text = ["000033","FF0099","000000","000000"];
//--></SCRIPT>

<SCRIPT src="OPENCV用户手册之图像处理部分:采样、差值与几何变换(中文翻译)  CNBIE_files/show_ads.js" 
type=text/javascript>
</SCRIPT>

<SCRIPT type=text/javascript><!--
google_ad_client = "pub-0139896083561460";
google_ad_width = 336;
google_ad_height = 280;
google_ad_format = "336x280_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = ["003333","870100","336699","000000"];
google_color_bg = ["FFFFFF","FFFFFF","FFFFFF","F0F0F0"];
google_color_link = ["FF0066","0033FF","0000FF","0000FF"];
google_color_url = ["00008B","999999","008000","008000"];
google_color_text = ["000033","FF0099","000000","000000"];
//--></SCRIPT>

<SCRIPT src="OPENCV用户手册之图像处理部分:采样、差值与几何变换(中文翻译)  CNBIE_files/show_ads.js" 
type=text/javascript>
</SCRIPT>
</DIV>
<DIV id=top></DIV>
<DIV class=title id=title align=left>
<H1>OPENCV用户手册之图像处理部分:采样、差值与几何变换(中文翻译)</H1>
<SCRIPT language=javascript 
src="OPENCV用户手册之图像处理部分:采样、差值与几何变换(中文翻译)  CNBIE_files/bodybegin.js"></SCRIPT>
<BR></DIV>
<DIV class=content id=content>
<DIV onmouseover="style.border='1px solid red'" 
style="BORDER-RIGHT: #ffff00 1px solid; PADDING-RIGHT: 20px; BORDER-TOP: #ffff00 1px solid; PADDING-LEFT: 20px; PADDING-BOTTOM: 20px; MARGIN: 5px 10px 10px; BORDER-LEFT: #ffff00 1px solid; PADDING-TOP: 20px; BORDER-BOTTOM: #ffff00 1px solid; BACKGROUND-COLOR: #ffffcc" 
onmouseout="style.border='1px solid #FFFF00'" 
;><B>OPENCV用户手册之图像处理部分:采样、差值与几何变换(中文翻译)</B><BR><BR>
<H2>采样、差值和几何变换</H2>
<P>翻译:HUNNISH,<AHREF="HTTP: ? 
www.assuredigit.com><FONTCOLOR=#000080>阿须数码</FONT></A></P>
<P>
<HR>

<P></P>
<H3><ANAME=DECL_CVINITLINEITERATOR>InitLineIterator</A></H3><PCLASS=BLURB><SPANSTYLE="FONT-FAMILY:宋体;MSO-ASCII-FONT-FAMILY:HELVETICA;MSO-HANSI-FONT-FAMILY:HELVETICA">初始化线段迭代器</SPAN>
<P></P><PRE>intcvInitLineIterator(constCvArr*image,CvPointpt1,CvPointpt2,CvLineIterator*line_iterator,intconnectivity=8);</PRE>
<P>
<DL>
  <DT>image
  <DD>带线段的图像.
  <DT>pt1
  <DD>线段起始点
  <DT>pt2
  <DD>线段结束点
  <DT>line_iterator
  <DD>指向线段迭代器结构的指针
  <DT>connectivity
  <DD>被扫描线段的连通数,<SPANLANG=EN-US>4或8.</SPAN></DD></DL>
<P>函数<SPANLANG=EN-US><AHREF="FILE: pvw1.htm#decl_cvInitLineIterator? 
FrontPageTempDir Temp LOCALS~1 user DOCUME~1 
C:>cvInitLineIterator</A>初始化线段迭代器,并返回两点之间的象素点数目。两个点必须在图像内。当迭代器初始化后,连接两点的光栅线上所有点,都可以连续通过调用</SPAN><CODE><SPANLANG=EN-US>CV_NEXT_LINE_POINT</SPAN></CODE><SPANLANG=EN-US>来得到。线段上的点是使用4-连通或8-连通利用Bresenham算法逐点计算的。</SPAN></P>
<H4><SPANSTYLE="FONT-FAMILY:宋体;MSO-ASCII-FONT-FAMILY:HELVETICA;MSO-HANSI-FONT-FAMILY:HELVETICA">例子:使用线段迭代器计算彩色线上象素值的和</SPAN></H4><PRE>CvScalarsum_line_pixels(IplImage*image,CvPointpt1,CvPointpt2){CvLineIteratoriterator;intblue_sum=0,green_sum=0,red_sum=0;intcount=cvInitLineIterator(image,pt1,pt2,&amp;iterator,8);for(inti=0;i&lt;count;i++){blue_sum+=iterator.ptr[0];green_sum+=iterator.ptr[1];red_sum+=iterator.ptr[2];CV_NEXT_LINE_POINT(iterator);/*printthepixelcoordinates:demonstrateshowtocalculatethecoordinates*/{intoffset,x,y;/*assumethatROIisnotset,otherwiseneedtotakeitintoaccount.*/offset=iterator.ptr-(uchar*)(image-&gt;imageData);y=offset/image-&gt;widthStep;x=(offset-y*image-&gt;widthStep)/(3*sizeof(uchar)/*sizeofpixel*/);printf("(%d,%d)\n",x,y);}}returncvScalar(blue_sum,green_sum,red_sum);}</PRE>
<HR>

<H3><ANAME=DECL_CVSAMPLELINE>SampleLine</A></H3><PCLASS=BLURB><SPANSTYLE="FONT-FAMILY:宋体;MSO-ASCII-FONT-FAMILY:HELVETICA;MSO-HANSI-FONT-FAMILY:HELVETICA">将光栅线读入缓冲区</SPAN>
<P></P><PRE>intcvSampleLine(constCvArr*image,CvPointpt1,CvPointpt2,void*buffer,intconnectivity=8);</PRE>
<P>
<DL>
  <DT>image
  <DD>带线段图像
  <DT>pt1
  <DD>起点
  <DT>pt2
  <DD>终点
  <DT>buffer
  <DD>存储线段点的缓存区,必须有足够大小来存储点<SPANLANG=EN-US>max(|</SPAN><CODE><SPANLANG=EN-US>pt2.x</SPAN></CODE><SPANLANG=EN-US>-</SPAN><CODE><SPANLANG=EN-US>pt1.x</SPAN></CODE><SPANLANG=EN-US>|+1,|</SPAN><CODE><SPANLANG=EN-US>pt2.y</SPAN></CODE><SPANLANG=EN-US>-</SPAN><CODE><SPANLANG=EN-US>pt1.y</SPAN></CODE><SPANLANG=EN-US>|+1):8-连通情况下,以及|</SPAN><CODE><SPANLANG=EN-US>pt2.x</SPAN></CODE><SPANLANG=EN-US>-</SPAN><CODE><SPANLANG=EN-US>pt1.x</SPAN></CODE><SPANLANG=EN-US>|+|</SPAN><CODE><SPANLANG=EN-US>pt2.y</SPAN></CODE><SPANLANG=EN-US>-</SPAN><CODE><SPANLANG=EN-US>pt1.y</SPAN></CODE><SPANLANG=EN-US>|+1:4-连通情况下.</SPAN>
  <DT>connectivity
  <DD>Thelineconnectivity,4or8.</DD></DL>
<P>函数cvSampleLine实现了线段迭代器的一个特殊应用。它读取由两点pt1和pt2确定的线段上的所有图像点,包括终点,并存储到缓存中。</P>
<HR>

<H3><ANAME=DECL_CVGETRECTSUBPIX>GetRectSubPix</A></H3><PCLASS=BLURB><SPANSTYLE="FONT-FAMILY:宋体;MSO-ASCII-FONT-FAMILY:HELVETICA;MSO-HANSI-FONT-FAMILY:HELVETICA">从图像中提取象素矩形,使用子象素精度</SPAN>
<P></P><PRE>voidcvGetRectSubPix(constCvArr*src,CvArr*dst,CvPoint2D32fcenter);</PRE>
<P>
<DL>
  <DT>src
  <DD>输入图像.
  <DT>dst
  <DD>提取的矩形.
  <DT>center
  <DD>提取的象素矩形的中心,浮点数坐标。中心必须位于图像内部.</DD></DL>
<P>函数<SPANLANG=EN-US><AHREF="FILE: FrontPageTempDir Temp LOCALS~1 user DOCUME~1 
C: 
pvw1.htm#decl_cvGetRectSubPix?>cvGetRectSubPix</A>从图像</SPAN><CODE><SPANLANG=EN-US>src中提取矩形</SPAN></CODE><SPANLANG=EN-US>:</SPAN></P><PRE>dst(x,y)=src(x+center.x-(width(dst)-1)*0.5,y+center.y-(height(dst)-1)*0.5)</PRE>
<P>其中非整数象素点坐标采用双线性差值提取。对多通道图像,每个通道独立单独完成提取。矩形中心必须位于图像内部,而整个矩形可以部分不在图像内。这种情况下,复制的边界模识用来得到图像边界外的象素值(<SPANLANG=EN-US>Hunnish:令人费解)</SPAN></P>
<HR>

<H3><ANAME=DECL_CVGETQUADRANGLESUBPIX>GetQuadrangleSubPix</A></H3><PCLASS=BLURB><SPANSTYLE="FONT-FAMILY:宋体;MSO-ASCII-FONT-FAMILY:HELVETICA;MSO-HANSI-FONT-FAMILY:HELVETICA">提取象素四边形,使用子象素精度</SPAN>
<P></P><PRE>voidcvGetQuadrangleSubPix(constCvArr*src,CvArr*dst,constCvMat*map_matrix,intfill_outliers=0,CvScalarfill_value=cvScalarAll(0));</PRE>
<P>
<DL>
  <DT>src
  <DD>输入图像.
  <DT>dst
  <DD>提取的四边形.
  <DT>map_matrix
  <DD><SPANLANG=EN-US>3×2变换矩阵[</SPAN><CODE><SPANLANG=EN-US>A</SPAN></CODE><SPANLANG=EN-US>|</SPAN><CODE><SPANLANG=EN-US>b</SPAN></CODE><SPANLANG=EN-US>](见讨论).</SPAN>
  <DT>fill_outliers
  <DD>该标志位指定是否对原始图像边界外面的象素点使用复制模式(<CODE>fill_outliers</CODE>=0)进行差值或者将其设置为指定值(<CODE>fill_outliers</CODE>=1)。
  <DT>fill_value
  <DD>对原始图像边界外面的象素设定固定值,当<CODE><SPANLANG=EN-US>fill_outliers</SPAN></CODE><SPANLANG=EN-US>=1.</SPAN></DD></DL>
<P>函数<SPANLANG=EN-US><AHREF="FILE: FrontPageTempDir Temp LOCALS~1 user DOCUME~1 
C: 
pvw1.htm#decl_cvGetQuadrangleSubPix?>cvGetQuadrangleSubPix</A>从图像</SPAN><CODE><SPANLANG=EN-US>src</SPAN></CODE><SPANLANG=EN-US>中提取四边形,使用子象素精度,并且将结果存储于</SPAN><CODE><SPANLANG=EN-US>dst</SPAN></CODE><SPANLANG=EN-US>,计算公式是:</SPAN></P><PRE>dst(x+width(dst)/2,y+height(dst)/2)=src(A<SUB>11</SUB>x+A<SUB>12</SUB>y+b<SUB>1</SUB>,A<SUB>21</SUB>x+A<SUB>22</SUB>y+b<SUB>2</SUB>),where<CODE>A</CODE>and<CODE>b</CODE>aretakenfrom<CODE>map_matrix</CODE>|A<SUB>11</SUB>A<SUB>12</SUB>b<SUB>1</SUB>|map_matrix=|||A<SUB>21</SUB>A<SUB>22</SUB>b<SUB>2</SUB>|</PRE>
<P>其中在非整数坐标<SPANLANG=EN-US>A•(x,y)<SUP>T</SUP>+b的象素点值通过双线性变换得到。多通道图像的每一个通道都单独计算.</SPAN></P>
<H4><SPANSTYLE="FONT-FAMILY:宋体;MSO-ASCII-FONT-FAMILY:HELVETICA;MSO-HANSI-FONT-FAMILY:HELVETICA">例子:使用</SPAN><SPANLANG=EN-US>cvGetQuadrangleSubPix</SPAN><SPANSTYLE="FONT-FAMILY:宋体;MSO-ASCII-FONT-FAMILY:HELVETICA;MSO-HANSI-FONT-FAMILY:HELVETICA">进行图像旋转</SPAN></H4><PRE>#include"cv.h"#include"highgui.h"#include"math.h"intmain(intargc,char**argv){IplImage*src;/*thefirstcommandlineparametermustbeimagefilename*/if(argc==2&amp;&amp;(src=cvLoadImage(argv[1],-1))!=0){IplImage*dst=cvCloneImage(src);intdelta=1;intangle=0;cvNamedWindow("src",1);cvShowImage("src",src);for(;;){floatm[6];doublefactor=(cos(angle*CV_PI/180.)+1.1)*3;CvMatM=cvMat(2,3,CV_32F,m);intw=src-&gt;width;inth=src-&gt;height;m[0]=(float)(factor*cos(-angle*2*CV_PI/180.));m[1]=(float)(factor*sin(-angle*2*CV_PI/180.));m[2]=w*0.5f;m[3]=-m[1];m[4]=m[0];m[5]=h*0.5f;cvGetQuadrangleSubPix(src,dst,&amp;M,1,cvScalarAll(0));cvNamedWindow("dst",1);cvShowImage("dst",dst);if(cvWaitKey(5)==27)break;angle=(angle+delta)%360;}}return0;}</PRE>
<HR>

<H3><ANAME=DECL_CVRESIZE>Resize</A></H3><PCLASS=BLURB><SPANSTYLE="FONT-FAMILY:宋体;MSO-ASCII-FONT-FAMILY:HELVETICA;MSO-HANSI-FONT-FAMILY:HELVETICA">图像大小变换</SPAN>
<P></P><PRE>voidcvResize(constCvArr*src,CvArr*dst,intinterpolation=CV_INTER_LINEAR);</PRE>
<P>
<DL>
  <DT>src
  <DD>输入图像.
  <DT>dst
  <DD>输出图像.

⌨️ 快捷键说明

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