详解OpenCV的椭圆曲线点坐标近似计算函数ellipse2Poly()

news2025/1/19 14:32:36

详解OpenCV的椭圆曲线点坐标近似计算函数ellipse2Poly()

函数ellipse2Poly()可用于近似计算椭圆曲线的像素坐标。
而前面介绍过的函数ellipse()则是直接在图像中绘制椭圆,详情见 https://www.hhai.cc/thread-174-1-1.html

函数ellipse2Poly()的C++原型如下:

void cv::ellipse2Poly(Point center,
                      Size axes,
                      int angle,
                      int arcStart,
                      int arcEnd,
                      int delta,
                      std::vector< Point > & pts)

函数ellipse2Poly()的Python原型如下:

pts=cv.ellipse2Poly(center, axes, angle, arcStart, arcEnd, delta)

参数意义如下:
center—椭圆的中心坐标。
axes—椭圆的长半轴和短半轴的长度。
angle—椭圆旋转的角度,单位为度。
arcStart–椭圆孤起始的角度,单位为度。
arcEnd—椭圆弧终止的角度,单位为度。
delta—点与点之间的角度分辨率,其实就是对椭圆曲线的近似度。
pts—存储椭圆曲线像素坐标的数组。

上面的各参数除了参数delta不太好理解,其它都很好理解。

对于参数delta的意义,通过两个例子,大家就清楚了。

我们把函数ellipse2Poly()近似得到的曲线绘制出来,示例代码及运行结果如下:

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

import numpy as np
import cv2 as cv

if __name__ == '__main__':
    img = np.zeros((400, 400, 3), dtype='uint8')

    points = cv.ellipse2Poly((200, 200), (100, 70), 0, 0, 360, 3)  # 参数delta=3
    # points = cv.ellipse2Poly((200, 200), (100, 70), 0, 0, 360, 30)  # 参数delta=30

    for i in range(len(points) - 1):
        img = cv.line(img, (points[i][0], points[i][1]), (points[i + 1][0], points[i + 1][1]),
                      (255, 0, 0), 2, cv.LINE_4, 0)

    cv.imshow('Image', img)
    cv.waitKey(0)
    cv.destroyAllWindows()
    

当delta=3时的运行结果如下:
在这里插入图片描述
当delta=30时的运行结果如下:
在这里插入图片描述
通过上面的运行结果和示例代码,大家就知道函数函数ellipse2Poly()中参数delta的意义了,也知道函数ellipse2Poly()的使用方法了。

接下来,再附一个函数ellipse2Poly()的C++示例代码:

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

//OpenCV版本 OpenCV3.0

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

using namespace std;
using namespace cv;

int main()
{
	Mat A1 = Mat::zeros(400, 400, CV_8UC3);

	std::vector< Point > points;

	ellipse2Poly(Point(200, 200), Size(100, 70), 0, 0, 270, 3, points);

	int i = 0;

	for (int i = 0; i < points.size() - 1; i++)
	{
		line(A1, points[i], points[i+1], Scalar(0, 255, 0));
	}


	imshow("A1", A1);
	cv::waitKey(0);

	return(0);
}

运行结果如下:
在这里插入图片描述

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

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

相关文章

【Shell】find文件查找

语法格式 find [路径] [选项] [操作]选项参数对照表 常用选项 -name 查找/etc目录下以conf结尾的文件ind /etc -nam -iname 查找当前目录下文件名为aa的文件,不区分大小写 find . -iname aa -user 查找文件属主为hdfs的所有文件find . -user hdfs -group 查找文件属组为yarn的…

虹科方案 | 解决连接到IEEE 1588高可用性网络的SCADA系统的NTP同步参考问题

目前&#xff0c;各个行业都在朝着以太网融合的趋势发展&#xff0c;近年来也出现了一些可用于增强标准以太网弹性的技术创新&#xff0c;并被用作运营&#xff08;OT&#xff09;和信息技术&#xff08;IT)的通用链路层。电气等具有高可用性和严格时序要求的关键领域推动了这些…

1362:家庭问题(family)

1362&#xff1a;家庭问题(family) 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 6732 通过数: 3529 【题目描述】 有n个人&#xff0c;编号为1,2,……n&#xff0c;另外还知道存在K个关系。一个关系的表达为二元组&#xff08;α&#xff0c;β&#xff09;形式…

GBK编码的理解

1、我们学程序的时候&#xff0c;所熟知的ASCII码&#xff0c;就是一种编码方式 计算机底层&#xff0c;就只认识0和1. 举个例子&#xff0c;以3bit为例&#xff1a; 所以&#xff0c;如果是000的话&#xff0c;可以对应数字0 如果是001的话&#xff0c;可以对应数字1 。。…

非零基础自学Golang 第13章 并发与通道 13.4 select 13.5 小结

非零基础自学Golang 文章目录非零基础自学Golang第13章 并发与通道13.4 select13.4.1 select作用13.4.2 超时13.4.3 死锁13.5 小结第13章 并发与通道 13.4 select Go语言中&#xff0c;通过关键字select可以监听channel上的数据流动。 select的用法和switch非常相似&#xf…

Python中的基本数据类型

文章目录前言一、字符串类型字符串表示方法二、数字类型1. 整数2.浮点数3.复数三、布尔类型总结前言 我们一般在电脑中存储的数据有多种数据类型。比如下图这张员工工资表&#xff1a; 表中员工姓名可以用字符串类型存储&#xff08;比如"李世民"、“侯君集”&#…

Hadoop学习----HDFS

文件系统 文件系统&#xff1a;是一种存储和组织数据的方法&#xff0c;实现数据的存储、分级组织、访问和获取等操作&#xff0c;使得用户对文件访问和查找变得容易。文件系统使用树形目录的抽象逻辑概念代替了硬盘等物理设备使用数据块的概念&#xff0c;用户不必关心数据底…

实验三 进程的互斥与同步

文章目录一、 实验目的二、 实验原理三、实验内容四、我的代码内容和现象1、philosopher12、philosopher2这个程序不会发生死锁&#xff0c;因为五、课后习题&#xff1a;1.什么是死锁&#xff1f;产生死锁的原因和必要条件是什么&#xff1f;2.实验中给出的伪代码流程&#xf…

Problem Set 3

1Lagrange Duality Formulate the Lagrange dual problem of the following linear programming prob-lem min cT rs.t.Ax 二b where a ∈R is variable,c ∈ R"&#xff0c;A ∈Rkn, b ∈ Rk. 解&#xff1a;设拉格朗日函数为L(x,λ)cTxλT(Ax−b)\mathcal{L}(x,\lambda)…

第十七章 webpack5项目搭建Vue-Cli(开发模式)

step1–创建项目目录 创建一个目录用来搭建vue-cli的项目 mkdir vue-cli cd vue-clistep2–初始化项目 初始化项目&#xff0c;生成一个package.json文件 npm init -ystep3–编写vue-cli的开发模式配置 新建目录 / |-config | |--webpack.dev.js | |--webpack.prod.js我…

USB TO SPI(上海同旺电子)调试器调试25LC020A

所需设备&#xff1a; 1、USB TO SPI(上海同旺电子)&#xff1b; 2、25LC020A 2Kb 2.5V SPI Serial EEPROM; Microchip 25LC020A 是一款 2 Kb 串行 EEPROM&#xff0c;采用行业标准串行外设接口 (SPI) 兼容串行总线。 该器件被组织为一个 256 x 8 位块&#xff0c;并针对消…

Java安全--CC7

在学CC7的时候我有这么几个疑问 1.为什么要两个LazyMap 2.hashCode那一步怎么计算的 3.为什么要remove yy 4.为什么put两个 我们可以先看一下CC7的链子是怎么走的: 其实分析链子还是从命令执行走到readObject比较好理解&#xff0c;虽然比较麻烦&#xff0c;比较繁琐&#xff0…

机器人机械臂运动学——逆运动学解算

1.情景概述 假设最一般的情况&#xff0c;我们的机械臂有六个自由度&#xff0c;那么从初始状态想要变化到目标的状态&#xff0c;一般情况下我们至少需要进行六次的变换&#xff0c;而这六次变换的矩阵参数隐含在整体的变换矩阵中。 根据之前的知识&#xff0c;左上角的3*3代表…

m基于隐马尔科夫模型(HMM)的手机用户行为预测(MMUB)算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 隐马尔可夫模型&#xff08;Hidden Markov Model&#xff0c;HMM&#xff09;是一种统计模型&#xff0c;广泛应用在语音识别&#xff0c;词性自动标注&#xff0c;音字转换&#xff0c;概率文法…

R语言中的Nelson-Siegel模型在汇率预测的应用

这篇文章的目的是指导读者逐步使用R编程语言实现Nelson-Siegel模型的步骤。 最近我们被客户要求撰写关于Nelson-Siegel模型的研究报告&#xff0c;包括一些图形和统计输出。 您可能已经知道&#xff0c;估计利率期限结构是任何资产定价的关键&#xff0c;因此对投资者和政策制…

5G无线技术基础自学系列 | 基于Massive MIMO的场景化波束优化

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 前面内容提到&#xff0c; 5G中引入了M…

机器人机械臂运动学——运动学正向解算

本博客内容参考台湾大学_林沛群教授_机器人学的课程内容 1.相对运动关系的描述方法 假设有现在这样的一个情景&#xff0c;从左到右有三个转轴&#xff0c;转轴本身可以转动&#xff0c;也可以沿着轴线上下平动&#xff0c;那么我们如何描述其中的运动学关系及其位置关系呢&am…

Linux Red Hat 8.0 cat、cut、sed、tail命令

1.cat&#xff1a; 在终端设备上显示文件内容 常用选项&#xff1a; -n 显示行数&#xff08;空格有编号&#xff09; -b 显示行数&#xff08;空格没有编号&#xff09; 命令格式&#xff1a;cat 选项 文件 特殊用法tac&#xff1a;倒着显示内容 配合重定向使用 查看 test1…

DPDK 多进程

DPDK库里是支持多进程和多线程&#xff0c;本文主要总结多进程的相关的操作。 DPDK多进程使用的关键启动参数&#xff1a; --proc-type&#xff1a;指定一个dpdk进程是主进程还是副进程&#xff08;参数值就用上面的primary或是secondary&#xff0c;或者是auto&#xff09;-…

【Bio】基础生物学 - 五个重要官能团 five important functional group

文章目录1. 羟qiǎng基&#xff08;hydroxyl&#xff09;2. 羧suō基&#xff08;carboxyl&#xff09;3. 氨基&#xff08;amino&#xff09;4. 磷酸盐&#xff08;phosphate&#xff09;5. 巯基&#xff08;sulfhydryl&#xff09;1. 羟qiǎng基&#xff08;hydroxyl&#xf…