IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 详解OpenCV的椭圆曲线点坐标近似计算函数ellipse2Poly() -> 正文阅读

[人工智能]详解OpenCV的椭圆曲线点坐标近似计算函数ellipse2Poly()

详解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);
}

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

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 11:10:19  更:2022-12-25 11:13:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 19:56:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码