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;
}

运行结果

相关推荐
songyuc11 分钟前
《A Bilateral CFAR Algorithm for Ship Detection in SAR Images》译读笔记
人工智能·笔记·计算机视觉
码界奇点28 分钟前
解密AI语言模型从原理到应用的全景解析
人工智能·语言模型·自然语言处理·架构
余衫马33 分钟前
你好,未来:零基础看懂大语言模型
人工智能·语言模型·自然语言处理·智能体
pingao14137834 分钟前
冰雪环境无忧测:冬季加热激光雪深监测站保障道路安全与气象研究
人工智能·安全
AndrewHZ41 分钟前
【图像处理基石】提升图像通透感:从原理到实操的完整指南
图像处理·人工智能·计算机视觉·cv·对比度·动态范围·通透感
草莓熊Lotso1 小时前
C++ 方向 Web 自动化测试实战:以博客系统为例,从用例到报告全流程解析
前端·网络·c++·人工智能·后端·python·功能测试
劲墨难解苍生苦1 小时前
spring ai alibaba mcp 开发demo
java·人工智能
程序员霸哥哥1 小时前
从零搭建PyTorch计算机视觉模型
人工智能·pytorch·python·计算机视觉
草莓熊Lotso2 小时前
Linux 基础开发工具入门:软件包管理器的全方位实操指南
linux·运维·服务器·c++·人工智能·网络协议·rpc
IT_陈寒2 小时前
Vue 3性能优化实战:7个关键技巧让我的应用加载速度提升50%
前端·人工智能·后端