1.基础图形绘制:
直线,矩形,圆,椭圆,多边形;
2. putText()函数:
putText( Mat& img, const string& text, Point org,
int fontFace, double fontScale, Scalar color,
int thickness=1, int lineType=8,
bool bottomLeftOrigin=false );
参数解释:
. Mat& img: 要添加备注的图片
. const string& text: 要添加的文字内容
. Point org: 要添加的文字基准点或原点坐标,左上角还是左下角取决于最后一个参数bottomLeftOrigin的取值
. int fontFace: 文字的字体类型(Hershey字体集),可供选择的有
FONT_HERSHEY_SIMPLEX:正常大小无衬线字体
FONT_HERSHEY_PLAIN:小号无衬线字体
FONT_HERSHEY_DUPLEX:正常大小无衬线字体,比FONT_HERSHEY_SIMPLEX更复杂
FONT_HERSHEY_COMPLEX:正常大小有衬线字体
FONT_HERSHEY_TRIPLEX:正常大小有衬线字体,比FONT_HERSHEY_COMPLEX更复杂
FONT_HERSHEY_COMPLEX_SMALL:FONT_HERSHEY_COMPLEX的小译本
FONT_HERSHEY_SCRIPT_SIMPLEX:手写风格字体
FONT_HERSHEY_SCRIPT_COMPLEX:手写风格字体,比FONT_HERSHEY_SCRIPT_SIMPLEX更复杂
这些参数和FONT_ITALIC同时使用就会得到相应的斜体字
. double fontScale: 字体相较于最初尺寸的缩放系数。若为1.0f,则字符宽度是最初字符宽度,若为0.5f则为默认字体宽度的一半
. Scalar color: 很熟悉了,字体颜色
. int thickness = 1: 字体笔画的粗细程度,有默认值1
. int lineType = 8: 字体笔画线条类型,有默认值8
. bool bottomLeftOrigin = false: 如果取值为TRUE,则Point org指定的点为插入文字的左上角位置,如果取值为默认值false则指定点为插入文字的左下角位置.
代码:
void visionagin::DrawingOperate()
{
Mat base = Mat::zeros(Size(480, 480), CV_8UC3);
line(base, Point(150, 150), Point(300, 300), Scalar(200, 0, 0), 2,LINE_AA);
circle(base, Point(240, 240), 150, Scalar(0, 0, 200), 2, LINE_AA);
rectangle(base, Point(100, 100), Point(150,180), Scalar(0, 200, 0),1, LINE_AA);//矩形左上,右下点
ellipse(base,Point(150, 150), Size(100, 150), 0,0,360, Scalar(0, 0, 200), 2, 8);
ellipse(base, Point(150, 150), Size(100, 150), 45, 0, 360, Scalar(0, 200, 0), 2, 8);//45,0,360分别为椭圆旋转角度(顺时针旋转),以及绘制的椭圆的弧度,0-360即绘制整个椭圆
//绘制多边形
vector<Point>pts;//多边形顶点点集
pts.push_back(Point(100, 80));
pts.push_back(Point(200, 80));
pts.push_back(Point(200, 180));
pts.push_back(Point(150, 240));
pts.push_back(Point(100, 180));
vector<vector<Point>>npts;//多个多边形点集的集,本例只绘制一个
npts.push_back(pts);
int ptnum[1] = { pts.size()};//多边形顶点数,本例只绘制有个多边形
polylines(base, npts, true, Scalar(200, 0, 0), 1, LINE_AA, 0);//绘制
//填充多边形
fillPoly(base, npts, Scalar(200, 0, 0), 8, 0);
//txt插入
putText(base, "drawingpicture", Point(200, 200),FONT_HERSHEY_SCRIPT_COMPLEX, 1, Scalar(255, 255, 255));
imshow("drawingdemo", base);
}