当前位置: 首页 > news >正文

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


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

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

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。

代码示例

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

运行结果

在这里插入图片描述


http://www.mrgr.cn/news/13429.html

相关文章:

  • 计算机网络 - 应用层
  • C++ STL 关联容器
  • 代码随想录算法训练营第五十二天 | 图论part03
  • 企业级NoSql数据库 --- Redis集群
  • AI的未来已来:GPT-4商业应用带来的无限可能
  • 【python报错已解决】AttributeError: module ‘PIL.Image‘ has no attribute ‘ANTIALIAS‘
  • 医疗数字化转型数据中台架构方案(四)
  • Mybatis】Mybatis-Plus 高级
  • Android12 Toast连续多次点击后不显示
  • 使用kafka完成数据的实时同步,同步到es中。(使用kafka实现自动上下架 upper、lower)
  • 大白话【8】WindowsServer2016搭建DNS服务
  • python基础(11文件读取)
  • 【mybatis系列】spring是如何整合mybatis将Mapper接口注册为Bean的
  • 数据结构(6.4_2)——最短路径问题_BFS算法
  • 2024了,Neo4j能显示节点图片吗?
  • 【Linux —— POSIX信号量 - 基于环形队列的生产消费模型】
  • 【云原生kubernetes系列之SkyWalking篇】
  • 每天一个数据分析题(五百零五)- 提升方法
  • k8s POD控制器
  • 网络安全威胁2024年中报告