OpenCV绘图函数(13)绘制多边形函数函数polylines()的使用

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

算法描述

画几条多边形曲线

函数原型

cpp 复制代码
void cv::polylines
(
	InputOutputArray 	img,
	InputArrayOfArrays 	pts,
	bool 	isClosed,
	const Scalar & 	color,
	int 	thickness = 1,
	int 	lineType = LINE_8,
	int 	shift = 0 
)		

参数

  • 参数img 图像.
  • 参数pts 多边形曲线数组.
  • 参数isClosed 一个标志位,指示所绘制的多边形曲线是否闭合。如果设为 true,则会从每条曲线的最后一个顶点画线到第一个顶点,形成闭合曲线。
  • 参数color 多边形曲线的颜色。
  • 参数thickness 多边形边缘的厚度。如果设为 -1,对于闭合曲线,则填充该多边形。
  • 参数lineType 线段类型。参见 LineTypes 枚举值。常见的有 LINE_8, LINE_AA (抗锯齿线) 等。
  • 参数shift 顶点坐标的分数位数。

函数原型2

cpp 复制代码
void cv::polylines	
(
	InputOutputArray 	img,
	const Point *const * 	pts,
	const int * 	npts,
	int 	ncontours,
	bool 	isClosed,
	const Scalar & 	color,
	int 	thickness = 1,
	int 	lineType = LINE_8,
	int 	shift = 0 
)		

参数2

  • 参数 img 表示输入输出图像。这是要绘制多边形线的图像。
  • 参数pts 一个多级指针,指向一系列点的数组。这些点定义了多边形的轮廓。
  • 参数npts 指向整数数组的指针,表示每个轮廓中的点的数量。
  • 参数ncontours表示轮廓的数量,即 pts 指向的轮廓数组的长度。
  • 参数isClosed一个布尔值,指示绘制的多边形线是否应该闭合。如果是 true,则最后一点和第一点之间会有一条连线。
  • 参数color 颜色值。在 OpenCV 中,颜色通常由一个 Scalar 结构体表示,其中包含 BGR 或 BGRA 颜色通道的值。
  • 参数thickness 线宽。默认值为 1,表示线的宽度。如果设置为 -1,并且轮廓是闭合的,那么轮廓内部会被填充。
  • 参数lineType: 线的类型。默认值为 LINE_8,可以是 LINE_4、LINE_8 或 LINE_AA(抗锯齿线)。
  • 参数shift 顶点坐标的小数位数。如果顶点坐标是以某个小数位数来表示的,这个值用来指定小数位数。默认值为 0,表示坐标是整数值。

代码示例

代码展示是画一个五角星

cpp 复制代码
#include <cmath>  // 用于计算角度
#include <opencv2/opencv.hpp>

int main()
{
    // 创建一个黑色的画布
    cv::Mat image = cv::Mat::zeros( 400, 800, CV_8UC3 );
    std::vector< cv::Point > starPoints;

    cv::Point p1( 439, 126 );
    cv::Point p2( 466, 198 );
    cv::Point p3( 546, 198 );
    cv::Point p4( 482, 244 );
    cv::Point p5( 507, 316 );
    cv::Point p6( 439, 275 );
    cv::Point p7( 371, 316 );
    cv::Point p8( 396, 244 );
    cv::Point p9( 330, 198 );
    cv::Point p10( 414, 198 );
    // 将5个坐标放入一个容器中

    starPoints.push_back( p1 );
    starPoints.push_back( p2 );
    starPoints.push_back( p3 );
    starPoints.push_back( p4 );
    starPoints.push_back( p5 );
    starPoints.push_back( p6 );
    starPoints.push_back( p7 );
    starPoints.push_back( p8 );
    starPoints.push_back( p9 );
    starPoints.push_back( p10 );

    // 绘制五角星
    cv::polylines( image, starPoints, true, cv::Scalar( 0, 0, 255 ), 2, cv::LINE_AA, 0 );

    // 显示图像
    cv::imshow( "Five-pointed Star", image );
    cv::waitKey( 0 );

    return 0;
}

运行结果

相关推荐
沐尘而生3 分钟前
【AI智能体】智能音视频-硬件设备基于 WebSocket 实现语音交互
大数据·人工智能·websocket·机器学习·ai作画·音视频·娱乐
巴伦是只猫7 分钟前
【机器学习笔记Ⅰ】3 代价函数
人工智能·笔记·机器学习
NetX行者8 分钟前
基于Vue 3的AI前端框架汇总及工具对比表
前端·vue.js·人工智能·前端框架·开源
hans汉斯34 分钟前
【人工智能与机器人研究】基于力传感器坐标系预标定的重力补偿算法
人工智能·算法·机器人·信号处理·深度神经网络
cver12342 分钟前
CSGO 训练数据集介绍-2,427 张图片 AI 游戏助手 游戏数据分析
人工智能·深度学习·yolo·目标检测·游戏·计算机视觉
FreeBuf_1 小时前
新型BERT勒索软件肆虐:多线程攻击同时针对Windows、Linux及ESXi系统
人工智能·深度学习·bert
强哥之神1 小时前
Meta AI 推出 Multi - SpatialMLLM:借助多模态大语言模型实现多帧空间理解
人工智能·深度学习·计算机视觉·语言模型·自然语言处理·llama
成都极云科技1 小时前
成都算力租赁新趋势:H20 八卡服务器如何重塑 AI 产业格局?
大数据·服务器·人工智能·云计算·gpu算力
喜欢吃豆1 小时前
从零构建MCP服务器:FastMCP实战指南
运维·服务器·人工智能·python·大模型·mcp
ai_xiaogui2 小时前
AIStarter用户与创作者模式详解:一键管理Stable Diffusion项目!
人工智能·stable diffusion·一键发布ai项目·熊哥aistarter教程·开发者必备aistarter