一、绘图
我们常常会想要画一幅图片,或者在某个其他地方得来的图片上画些东西。为了实现这个目标,OpenCV提供了一大批可以供我们画直线、矩形、圆等图形的函数。
1.艺术线条和填充多边形
画直线或者其它图形(虚线,圆,矩形等)的函数通常可以接受宽度(thickness)和线型(lineType)的参数。这两个参数都是整型的,但是第二个参数的值只能是4,8或者cv::LINE_AA。thickness参数是指线宽的像素数,对于圆、矩形和其他封闭图形,thickness参数可以被设置为cv::FILLES(相当于-1)。这样的话,整个图形就会被用便捷一样的颜色填充满。
图6-1.同一条直线分别使用4领域链接(A)8领域链接(B)和平滑处理(C)的线型
在表6-1中所列出的绘图算法中,端点(直线)、中心点(圆)和角点(矩形)等通常都规定为整型值。然而这些算法都支持使用shift参数来进行亚像素对齐。当shift参数有效时,这个值将被采用来指定整数参数的小数位数。例如,你要画一个圆,设置远心为(5,5),但是又把shift参数设为1,这样会得到一个远心在(2.5,2.5)的圆。这个对齐效果通常会很细微,取决于使用的线型。在平滑处理的直线中这个效果会比较明显。
函数 | 描述 |
---|---|
cv::circle() | 画一个简单圆 |
cv::clipLine() | 判断一条直线是否在给定的矩形内 |
cv::ellipse() | 画一个椭圆(可以倾斜,或者只有部分圆弧) |
cv::ellipse2poly() | 计算一个近似椭圆的多边形 |
cv::fillConvexPoly() | 画一个填充的简单多边形 |
cv::fillPoly() | 画一个填充的任意多边形 |
cv::line() | 画一个简单直线 |
cv::rectangle() | 画一个简单矩形 |
cv::polyLines() | 画多重折线 |
2.字体和文字
绘图的一种额外形式就是画文字。
函数名称 | 描述 |
---|---|
cv::putText() | 在图像中绘制指定文字 |
cv::getTextSize() | 获取一个文字的高度与宽度 |
3.小结
在这章里,我们学习了一些可以用来绘制和注释图像的新函数。