一、函数:
a.drawMarker
函数:
(1)函数原型:
CV_EXPORTS_W void drawMarker(InputOutputArray img, Point position,
const Scalar& color, int markerType = MARKER_CROSS, int markerSize=20,
int thickness=1, int line_type=8);
(2)函数作用:
drawMarker
函数在图像的给定位置上绘制一个标记。目前支持几种不同的标记类型。
(3)预定义标记:
- 标记用于在图像中突出显示特定位置,例如在目标检测或图像标注中。
(4)参数说明:
img
:要绘制标记的图像。position
:标记放置的点的位置。color
:线条颜色,使用Scalar
类型。markerType
:要使用的标记类型,见MarkerTypes
。默认为MARKER_CROSS
,表示绘制一个十字标记。thickness
:线条的粗细度。line_type
:线条的类型,见LineTypes
。默认为8
,表示线条为抗锯齿。markerSize
:标记轴的长度,默认为 20 像素。
(5)标记类型:
MarkerTypes
是一个枚举类型,定义了可用的标记形状,例如十字 (MARKER_CROSS
)、圆圈 (MARKER_STAR
) 等。
(6)线条类型:
LineTypes
是一个枚举类型,定义了线条的绘制方式,例如LINE_4
、LINE_8
(抗锯齿)等。
b. MarkerTypes
枚举:
MARKER_CROSS
:十字标记形状,通常由两条垂直和水平的线段组成,相互交叉。MARKER_TILTED_CROSS
:倾斜45度的十字标记形状,线段相对于十字标记有45度的倾斜。MARKER_STAR
:星形标记形状,是十字和倾斜十字的组合,通常有更长的线段和交叉点。MARKER_DIAMOND
:菱形标记形状,由四条线段组成,每条线段连接相对的两个点,形成菱形。MARKER_SQUARE
:正方形标记形状,由四条等长的线段组成,形成正方形。MARKER_TRIANGLE_UP
:向上指的三角形标记形状,三角形的顶点朝上。MARKER_TRIANGLE_DOWN
:向下指的三角形标记形状,三角形的顶点朝下。
二、示例代码:
#include <opencv2/core/utils/logger.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/objdetect.hpp>
#include <opencv2/highgui/highgui_c.h>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
utils::logging::setLogLevel(utils::logging::LOG_LEVEL_SILENT);
Mat sign = Mat::zeros(500, 600, CV_8UC3);//黑色背景
//加号
drawMarker(sign, Point(100, 50), Scalar(0, 255, 255), 0, 20, 1, 8);
//叉
drawMarker(sign, Point(100, 100), Scalar(0, 255, 255), 1);
//星
drawMarker(sign, Point(100, 200), Scalar(0, 255, 255), 2);
//方片
drawMarker(sign, Point(100, 250), Scalar(0, 255, 255), 3);
//方块
drawMarker(sign, Point(100, 300), Scalar(0, 255, 255), 4);
//三角
drawMarker(sign, Point(100, 350), Scalar(0, 255, 255), 5);
//倒三角
drawMarker(sign, Point(100, 400), Scalar(0, 255, 255), 6);
namedWindow("image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
imshow("image", sign);
waitKey(0);
destroyAllWindows();
return 0;
}