绘图是OpenCV经常使用的一个地方,很多时候我们需要绘制图像或者在已有的图像上方绘制一些图像。
函数原型:
<div id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:5d952840-7141-4460-8d1a-0948c8e044de" class="wlWriterEditableSmartContent" style="float: none; margin: 0px; display: inline; padding: 0px;">
<pre class="brush: delphi;">void cvLine(
CvArr* array,
CvPoint pt1,
CvPoint pt2,
CvScalar color,
intthickness = 1,
intconnectivity = 8
);</pre>
</div>
第一个参数 一般为一个图像类型的指针IplImage*。
第二个和第三个参数分别为直线的起点和终点,是CvPoint类型的,我们可以使用cvPoint(int x, int y)构造函数很方便的构造一个CvPoint类型的变量。
第四个参数是一个CvScalar类型的颜色变量,其结构前面已经介绍过,是一个包含四个双精度浮点型变量的集合。在这里。前三个分别代表红、绿、蓝通道(<span style="color: #ff0000;">但其实因为RGB在内存里面的存储顺序是BGRA BGRA,所以当使用CVScalar类型表示颜色时,其实四个分量分别代表B、G、R、A。如果想按照RGBA的顺序,可以使用后面介绍的宏CV_RGB构造CvScalar类型,而不是cvScalar。关于这一点,最后面的例子中也会有体现</span>);没有用到第四个(它只在适当的时候用于alpha通道)。一个常用的便捷宏指令是CV_RGB(r, g, b),该指令采用三个数字作为参数并将其封装到CvScalar。
最后两个参数是可选的,因为都有默认值。thickness是线的粗细(像素)。connectivity被设为反走样模式,默认值为“八连通”,这种是较为平滑不会走样的线型。也可以设置为“4连通”,这样的话,斜线会产生重叠以致看上去过于粗重,不过画起来速度很快。
函数原型:
<div id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:8c355eb3-2376-4975-aa00-734b9db87da4" class="wlWriterEditableSmartContent" style="float: none; margin: 0px; display: inline; padding: 0px;">
<pre class="brush: c;">void cvRectangle(
CvArr* array,
CvPoint pt1,
CvPoint pt2,
CvScalar color,
intthickness = 1
);</pre>
</div>
从函数原型就可以看出,这个函数和cvLine( )除了最后一个参数外,其他都一样。的确是,因为这个函数画的矩形总是平行于X和Y轴。cvcircle利用这个函数画矩形,只需要给出两个对顶点就可以。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-21679-1.html
不干涉