OpenCV绘图函数(5)绘制标记函数drawMarker()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

cv::drawMarker 函数在 OpenCV 中用于在一个给定的位置上绘制标记。目前支持几种不同的标记类型,具体信息可以参考 MarkerTypes

函数原型

cpp 复制代码
void cv::drawMarker	
(
	InputOutputArray 	img,
	Point 	position,
	const Scalar & 	color,
	int 	markerType = MARKER_CROSS,
	int 	markerSize = 20,
	int 	thickness = 1,
	int 	line_type = 8 
)		

参数

  • 参数img 图像.
  • 参数position 十字准星所在的位置点
  • 参数color 线条颜色
  • 参数markerType 您想要使用的标记类型,参见 MarkerTypes
  • 参数thickness 线条粗细
  • 参数line_type 线条类型,参见 LineTypes
  • 参数markerSize 标记轴的长度 [默认 = 20 像素]

代码示例

cpp 复制代码
#include <iostream>
#include <opencv2/opencv.hpp>

int main()
{
    // 创建一个空白图像
    cv::Mat image = cv::Mat::zeros( 500, 500, CV_8UC3 );

    // 设置标记参数
    cv::Point position( 40, 40 );       // 标记位置
    cv::Scalar color( 0, 0, 255 );      // 标记颜色(BGR格式)
    int markerType = cv::MARKER_CROSS;  // 标记类型 十字形标记形状。
    int markerSize = 50;                // 标记大小
    int thickness  = 2;                 // 标记线条厚度
    int line_type  = cv::LINE_8;        // 线条类型

    // 绘制标记
    cv::drawMarker( image, position, color, markerType, markerSize, thickness, line_type );

    // 45度倾斜的十字形标记形状
    markerType = cv::MARKER_TILTED_CROSS;
    position   = cv::Point( 90, 90 );
    cv::drawMarker( image, position, color, markerType, markerSize, thickness, line_type );

    //星形标记形状,是十字形和倾斜十字形的组合
    markerType = cv::MARKER_STAR;
    position   = cv::Point( 150, 150 );
    cv::drawMarker( image, position, color, markerType, markerSize, thickness, line_type );

    //菱形标记形状。
    markerType = cv::MARKER_DIAMOND;
    position   = cv::Point( 210, 210 );
    cv::drawMarker( image, position, color, markerType, markerSize, thickness, line_type );

    //  正方形标记形状。
    markerType = cv::MARKER_SQUARE;
    position   = cv::Point( 270, 270 );
    cv::drawMarker( image, position, color, markerType, markerSize, thickness, line_type );

    // 向上的三角形标记形状
    markerType = cv::MARKER_TRIANGLE_UP;
    position   = cv::Point( 330, 330 );
    cv::drawMarker( image, position, color, markerType, markerSize, thickness, line_type );

    //向下的三角形标记形状
    markerType = cv::MARKER_TRIANGLE_DOWN;
    position   = cv::Point( 400, 400 );
    cv::drawMarker( image, position, color, markerType, markerSize, thickness, line_type );

    // 显示图像
    cv::imshow( "Marker Drawing", image );
    cv::waitKey( 0 );

    return 0;
}

运行结果

相关推荐
寒月霜华34 分钟前
机器学习-数据标注
人工智能·机器学习
paid槮1 小时前
机器视觉之图像处理篇
图像处理·opencv·计算机视觉
九章云极AladdinEdu2 小时前
超参数自动化调优指南:Optuna vs. Ray Tune 对比评测
运维·人工智能·深度学习·ai·自动化·gpu算力
人工智能训练师2 小时前
Ubuntu22.04如何安装新版本的Node.js和npm
linux·运维·前端·人工智能·ubuntu·npm·node.js
cxr8284 小时前
SPARC方法论在Claude Code基于规则驱动开发中的应用
人工智能·驱动开发·claude·智能体
研梦非凡4 小时前
ICCV 2025|从粗到细:用于高效3D高斯溅射的可学习离散小波变换
人工智能·深度学习·学习·3d
幂简集成5 小时前
Realtime API 语音代理端到端接入全流程教程(含 Demo,延迟 280ms)
人工智能·个人开发
龙腾-虎跃5 小时前
FreeSWITCH FunASR语音识别模块
人工智能·语音识别·xcode
智慧地球(AI·Earth)5 小时前
给AI配一台手机+电脑?智谱AutoGLM上线!
人工智能·智能手机·电脑
Godspeed Zhao5 小时前
自动驾驶中的传感器技术46——Radar(7)
人工智能·机器学习·自动驾驶