详解OpenCV的椭圆绘制函数ellipse()

news2025/1/24 8:54:08

函数ellipse()用于在图像上绘制椭圆。

有两种原型,这里只列出常用的那种。

C++原型如下:

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)

Python原型如下:

img=cv.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]])

参数意义如下:
img—绘制的椭圆所在的图像。
center—椭圆的中心坐标。
axes—椭圆的长半轴和短半轴的长度。
angle—椭圆旋转的角度,单位为度。
startAngle—椭圆孤起始的角度,单位为度。
endAngle—椭圆弧终止的角度,单位为度。
color—线条的颜色,用三通道表示。
thickness—线条的粗细,默认值为1。
lineType—线条的类型,默认值为LINE_8。
shift—坐标值的小数位数。

从上面的参数意义可以看出,函数ellipse()不仅能绘制椭圆,还能控制椭圆的旋转角度,还能通过设置椭圆弧的起始和终止角度,只绘制椭圆的一部分。所以,函数ellipse()对椭圆的绘制很灵活的。

C++示例代码如下:

//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术
//OpenCV版本 OpenCV3.0

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;

void main()
{
	Mat org = imread("F:/material/images/P0039-all_blue.bmp");

	ellipse(org, Point(100, 100), Size(20, 50), 0, 0, 360, Scalar(0, 255, 0));

	ellipse(org, Point(300, 100), Size(50, 20), 0, 0, 360, Scalar(0, 255, 0));

	ellipse(org, Point(100, 300), Size(20, 50), 0, 0, 270, Scalar(0, 255, 0));

	ellipse(org, Point(300, 300), Size(20, 50), 30, 0, 270, Scalar(0, 255, 0), -1);

	imshow("img", org);
	cv::waitKey(0);
}

代码中用到的图像下载链接:
https://pan.baidu.com/s/1_JQQS9qRos74GxtSU9-gqg?pwd=i87b
运行结果如下:
在这里插入图片描述

Python示例代码如下:

# -*- coding: utf-8 -*-
# 出处:昊虹AI笔记网(hhai.cc)
# 用心记录计算机视觉和AI技术
# OpenCV的版本为4.4.0

import cv2 as cv
import sys

image = cv.imread('F:/material/images/P0039-all_blue.bmp')
if image is None:
    print('Error: Could not load image')
    sys.exit()

cv.ellipse(image, (100, 100), (20, 50), 0, 0, 360, (0, 255, 0))

cv.ellipse(image, (300, 100), (50, 20), 0, 0, 360, (0, 255, 0))

cv.ellipse(image, (100, 300), (20, 50), 0, 0, 270, (0, 255, 0))

cv.ellipse(image, (300, 300), (20, 50), 30, 0, 270, (0, 255, 0), -1)


cv.imshow('Source Image', image)

cv.waitKey(0)
cv.destroyAllWindows()

代码中用到的图像下载链接:
https://pan.baidu.com/s/1_JQQS9qRos74GxtSU9-gqg?pwd=i87b
运行结果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/105180.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

地统计插值学习心得(三)ArcGIS Pro与ArcMap软件中地统计分析的区别

前言 ArcMap中地统计分析由来已久,很多GIS专业的同学学习地统计内容都是在ArcMap软件中实现的,随着IT技术的发展,ArcGIS系列软件架构也发生了重大变化,传统的ArcMap软件已不太能够满足当前的应用需求,在此背景下,ESRI推出了64位的ArcGIS Pro桌面软件,来实现二三维一体化…

【关于时间序列的ML】项目 4 :使用机器学习预测迁移

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

【关于2022年卡塔尔世界杯】

2022卡塔尔世界杯最全面的看点和分析&#xff0c;相信一定有你感兴趣的一点&#xff0c;相信一定会有你感兴趣的&#xff0c;推荐点赞收藏~~ 2022年世界杯比以往任何时候都晚&#xff0c;因为卡塔尔太热了…… 然而&#xff0c;四年一度的世界杯终于……来了 今年的世界杯&am…

非零基础自学Golang 第14章 反射 14.1 反射定义

非零基础自学Golang 文章目录非零基础自学Golang第14章 反射14.1 反射定义14.1.1 反射的定义14.1.2 与其他语言的区别第14章 反射 我们常用的一个打印函数fmt.Println()可以打印任何类型的数据&#xff0c;但是它本身是怎么实现的呢&#xff1f; 解读源码可以看到&#xff0c…

人员定位系统如何实现对人、车、物的安全管控?

人员定位系统是采用物联网设计理念&#xff0c;通过结合定位基站、视频监控、人脸抓拍、巡更、门禁、道闸、梯控等系统&#xff0c;对管控区域工作人员、访客、巡检人员进行精细化、规范化、智能化理。 智慧安全的概念随着物联网技术的发展逐渐成为发展趋势&#xff0c;人员定位…

【Python机器学习】卷积神经网络Vgg19模型预测动物类别实战(附源码和数据集)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 典型神经网络 在深度学习的发展过程中&#xff0c;出现了很多经典的卷积神经网络&#xff0c;它们对深度学习的学术研究和工业生产斗起到了促进的作用&#xff0c;如VGG ResNet Inception DenseNet等等&#xff0c;很多实际…

偷偷告诉你!与其辞职,不如用Python做月入过万的副业兼职

我想辞职&#xff01; 这是不是当下的你&#xff1f;在这个疫情当下的时代&#xff0c;许多打工人都有过这么一个想法&#xff0c;或许是因为工作待遇、亦或许是其他原因&#xff0c;但是却仍然屹立在工位上&#xff0c;有的甚至天天喊辞职&#xff0c;月月拿满勤。这是为什么…

阿里大牛解析微服务架构:Docker,Spring全家桶,分布式,数据库

前言 微服务架构&#xff08;Microservice Architecture&#xff09;是一种架构概念&#xff0c;旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的类上应用很多SOLID原则。微服务架构是个很有趣的概念&#xff0c;它的…

【愚公系列】2022年12月 使用Jenkins实现程序的自动化发布

文章目录前言一、使用Jenkins实现程序的自动化发布1.安装Jenkins二、安装Gitee插件前言 Jenkins是一个开源软件项目&#xff0c;是基于Java开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件项目可以进…

如何用 Prometheus 和 Grafana 实现集群的监控预警

在读写、查询等高并发场景中&#xff0c;了解资源的使用情况能快速定位性能的瓶颈所在。本教程提供对多&#xff08;或单&#xff09;服务器及 DolphinDB 高可用集群&#xff08;或单节点&#xff09;资源的监控、告警、预警方案。本教程使用开源软件 Prometheus, Grafana 及对…

Git实战(四)| Git分支管理实操,搞定在线合并和本地合并

类似于SVN这种集中式版本管理&#xff0c;三年前刚来上海工作时候&#xff0c;在华为驻场上班&#xff0c;华为用的就是SVN&#xff0c;印象最深的就是那个小乌龟的图标&#xff1b;后来到外面工作&#xff0c;渐渐发现用Git的非常多&#xff0c;慢慢学习了解发现Git这种分布式…

5年Crud的我,啃完这份Java王者级核心宝典,成功入职阿里(P7)

我有话要说&#xff0c;请仔细看完 我发现一个现象&#xff0c;很多开发5年的程序员仍然停留在crud的阶段&#xff0c;这是什么原因&#xff1f;最主要的原因就是基础很差&#xff0c;尤其对于JVM和并发编程这方面掌握的比较差&#xff0c;而JVM和并发编程就是非常非常重要的基…

40问 深度挖掘Kafka,你能答上几个?

Kafka最初是由Linkedin公司开发的&#xff0c;是一个分布式的、可扩展的、容错的、支持分区的&#xff08;Partition&#xff09;、多副本的&#xff08;replica&#xff09;、基于Zookeeper框架的发布-订阅消息系统&#xff0c;Kafka适合离线和在线消息消费。它是分布式应用系…

SQL基础——集合运算

集合运算前言思维导图表的加减法表的加法——UNION&#xff08;并集&#xff09;代码示例7.1 创建表Product2代码示例7.2 将数据插入到表Product2中&#xff08;MYSQL&#xff09;代码示例7.3 使用UNION对表进行加法运算包含重复行的集合运算——ALL选项代码示例7.5 保留重复行…

自动机器学习-auto-sklearn

1、前言 自动机器学习&#xff08;AutoML&#xff09; 旨在通过让一些通用步骤 (如数据预处理、模型选择和调整超参数) 自动化&#xff0c;来简化机器学习中生成模型的过程。AutoML是指尽量不通过人来设定超参数&#xff0c;而是使用某种学习机制&#xff0c;来调节这些超参数…

阿里微服务架构到底多牛逼:深入解析Apache Dubbo与实战

本书的由来 在Apache Dubbo (以下简称Dubbo)重新开源之前&#xff0c;Dubbo已经被很多公司广泛用于生产环境并获得了良好的反馈&#xff0c;很多公司内部也会建立私有分支自己维护&#xff0c;其中Dubbox 就是基于Dubbo分支进行扩展并二次维护的。重新开源后&#xff0c;社区维…

【ESXi 7.x内部升级】ESXi 升级 —— 小版本升级(7.X或8.X版本内升级)

目录4. 小版本升级&#xff08;7.X或8.X版本内升级&#xff09;4.1 示例 — 使用 vSphere Lifecycle Manager升级 ESXi目标&#xff1a;将 VMware ESXi 7.0 U2e 升级为 7.0 U3f&#xff08;1&#xff09;在vSphere Client 中查看需要升级的 ESXi 版本&#xff08;2&#xff09;…

【微信篇】PC端微信文件夹里的“微信号“

【微信篇】PC端微信文件夹里的"微信号" 更新记录最敷衍的软件一微信&#xff01;&#xff01;&#xff01;—【蘇小沐】 文章目录【微信篇】PC端微信文件夹里的"微信号"1.实验环境PC端微信文件夹里的"微信号"总结1.实验环境 系统版本Windows 1…

深度学习入门(六十四)循环神经网络——编码器-解码器架构

深度学习入门&#xff08;六十四&#xff09;循环神经网络——编码器-解码器架构前言循环神经网络——编码器-解码器架构课件重新考察CNN重新考察RNN编码器-解码器架构总结教材1 编码器2 解码器3 合并编码器和解码器4 训练模型5 小结参考文献前言 核心内容来自博客链接1博客连…

分布式任务调度 - PowerJob

一、简介 1、介绍 PowerJob&#xff08;原OhMyScheduler&#xff09;是全新一代分布式任务调度与计算框架&#xff0c;其主要功能特性如下&#xff1a; 使用简单&#xff1a;提供前端Web界面&#xff0c;允许开发者可视化地完成调度任务的管理&#xff08;增、删、改、查&am…