OpenCV绘图函数(6)绘制椭圆函数ellipse()的使用

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

算法描述

画出一个简单的或粗的椭圆弧或者填充一个椭圆扇形。

函数 cv::ellipse 使用更多的参数可以画出椭圆轮廓、填充的椭圆、椭圆弧或填充的椭圆扇形。绘图代码使用一般参数形式。使用分段线性曲线来近似椭圆弧边界。如果你需要对椭圆渲染有更多的控制,你可以使用 ellipse2Poly 获取曲线,然后使用 polylines 进行绘制或使用 fillPoly 进行填充。如果你使用函数的第一个变体并且想要画出整个椭圆而不是弧线,传递 startAngle=0 和 endAngle=360。如果 startAngle 大于 endAngle,它们会被交换。下面的图解释了用于绘制蓝色弧线的参数含义。

椭圆弧的参数

函数原型1

cpp 复制代码
void cv::ellipse
(
	InputOutputArray 	img,
	Point 	center,
	Size 	axes,
	double 	angle,
	double 	startAngle,
	double 	endAngle,
	const Scalar & 	color,
	int 	thickness = 1,
	int 	lineType = LINE_8,
	int 	shift = 0 
)		

参数1

  • 参数img 图像.
  • 参数center 椭圆的中心。
  • 参数axes 椭圆主轴的一半长度。
  • 参数angle 椭圆旋转角度(度)。
  • 参数startAngle 椭圆弧的起始角度(度)。
  • 参数endAngle 椭圆弧的结束角度(度)。
  • 参数color 椭圆的颜色。
  • 参数thickness 椭圆弧边线的厚度,如果为正数。否则,表示要绘制填充的椭圆扇形。
  • 参数lineType 椭圆边界类型。参见LineTypes。
  • 参数shift 中心坐标和轴值中的分数位数。

函数原型2

这是一个重载成员函数,提供方便之用。它与上述函数的不同之处仅在于它接受的参数

cpp 复制代码
void cv::ellipse	
(
	InputOutputArray 	img,
	const RotatedRect & 	box,
	const Scalar & 	color,
	int 	thickness = 1,
	int 	lineType = LINE_8 
)		

参数2

  • 参数img 图像.
  • 参数box 通过RotatedRect表示的备选椭圆形式。这意味着函数将在旋转矩形内绘制一个内切椭圆。
  • 参数color 椭圆的颜色。
  • 参数thickness 椭圆轮廓的宽度,如果为正值,则表示线条的厚度;如果为负值,则表示要绘制填充的椭圆扇形。
  • 参数lineType 椭圆边界类型。参见LineTypes。

代码示例

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

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

    // 设置椭圆的参数
    cv::Point center(200, 200); // 椭圆中心
    cv::Size axes(100, 50);     // 椭圆的轴长
    double angle = 0;           // 椭圆旋转角度
    double startAngle = 0;      // 开始角度
    double endAngle = 360;      // 结束角度
    cv::Scalar color(0, 0, 255); // 颜色 (BGR)
    int thickness = 2;          // 线条粗细
    int line_type = cv::LINE_8; // 线条类型

    // 绘制椭圆
    cv::ellipse(image, center, axes, angle, startAngle, endAngle, color, thickness, line_type);

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

    return 0;
}

运行结果

相关推荐
johnsong10 小时前
AI前沿日报 · 2026-10-31 | 安全失守——当AI工具被下毒、当云端门户洞开
人工智能·安全
得帆低代码PaaS12 小时前
企业级 Agent 架构:MCP、Integration、数据与治理能力
大数据·人工智能·架构·ai agent·企业数字化·mcp
一条大祥脚13 小时前
TVM 的前世今生:从深度学习编译器到 AI 基础设施
人工智能·深度学习·tvm
冬奇Lab13 小时前
一天一个开源项目(第255篇):Mika —— 装在安卓手机里的 AI 代理,在后台虚拟屏上替你操作 App 和网页
人工智能·开源·资讯
孟健15 小时前
实测 agent-desktop:AI 控制桌面不截图、不占鼠标键盘,连点 55 次计算器 0 失误
人工智能·架构·开源
MUSHANGXS15 小时前
大模型时代的新蓝海-基于OS底层的AI-Agent应用
人工智能·职场和发展·交互
伞伞悦读15 小时前
【第76期】两张3行表左连接变5行:主键、validate与未匹配排查完整教程
人工智能·python
ZhengEnCi15 小时前
一句话定位图片中目标最准的模型是哪个:2026 视觉定位 SOTA 全面评测与选型指南
计算机视觉
IT_陈寒16 小时前
Redis大key删除为什么会导致服务卡顿?我的线上事故复盘
前端·人工智能·后端
阿里云大数据AI技术16 小时前
云栖实录 | AgenticSearch 定义 AI 搜索时代的信息检索 - 新范式
人工智能