函数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.0import cv2 as cv
import sysimage = 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
运行结果如下:

另外,OpenCV还提供了函数ellipse2Poly()用于计算输出近似椭圆曲线的像素坐标,关于函数ellipse2Poly()的详细介绍,请参见博文 https://www.hhai.cc/thread-175-1-1.html

详解OpenCV的椭圆绘制函数ellipse()相关推荐

  1. 详解OpenCV中的cvCreateMat()函数

    CreateImage函数 Creates an matrix header and allocates the matrix data   //创建矩阵头并分配矩阵数据. .C:CvMat* cvC ...

  2. 一分钟详解OpenCV之相机标定函数calibrateCamera()

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

    详解OpenCV的椭圆曲线点坐标近似计算函数ellipse2Poly() 函数ellipse2Poly()可用于近似计算椭圆曲线的像素坐标. 而前面介绍过的函数ellipse()则是直接在图像中绘制椭 ...

  4. 【OpenCV 4开发详解】图像直方图绘制

    本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...

  5. 详解OpenCV的函数imread()和函数imshow(),并利用它们实现对图像的读取和显示

    详解OpenCV的函数imread()和函数imshow(),并利用它们实现对图像的读取和显示 目录 01-详解函数imread():读取图像文件 02-详解函数imshow():显示图像 03-使用 ...

  6. 详解OpenCV中的Lucas Kanade稀疏光流单应追踪器

    详解OpenCV中的Lucas Kanade稀疏光流单应追踪器 1. 效果图 2. 源码 参考 这篇博客将详细介绍OpenCV中的Lucas Kanade稀疏光流单应追踪器. 光流是由物体或相机的运动 ...

  7. python怎么画参数函数图像_详解pandas.DataFrame.plot() 画图函数

    首先看官网的DataFrame.plot( )函数 DataFrame.plot(x=None, y=None, kind='line', ax=None, subplots=False, share ...

  8. OpenCV-Python实战(10)——详解 OpenCV 轮廓检测

    OpenCV-Python实战(10)--详解 OpenCV 轮廓检测 0. 前言 1. 轮廓介绍 2. 轮廓检测 3. 轮廓压缩 4. 图像矩 4. 1 一些基于矩的对象特征 4.2 Hu 不变矩 ...

  9. Python-Matplotlib可视化(10)——一文详解3D统计图的绘制

    Python-Matplotlib可视化(10)--一文详解3D统计图的绘制 前言 3D散点图 3D曲线图 3D标量场 绘制3D曲面 在3D坐标轴中绘制2D图形 3D柱形图 系列链接 前言 Matpl ...

最新文章

  1. 如何快速融入团队(三)
  2. android surfaceflinger研究----SurfaceFlinger loop
  3. Lunar New Year and Food Ordering
  4. python 组合数库函数_Python数据分析之Numpy库(笔记)
  5. UiAutomator喷射事件的源代码分析
  6. 实战之Windows+SQL+Exchange cluster之前期准备(实验文档)
  7. 金融IT和ERP,哪个更有前途?
  8. 机器学习基础算法25-SVM实践
  9. 怎么把两个pdf合并成一个?pdf合并方法
  10. 关于Sentaurus的日常(三)
  11. 空气质量监测管理系统
  12. 安装CAD2006出现html,Win7系统安装cad2006出现已终止CAD2006-Simplifieng安装怎么办
  13. 基于echarts+html+css+jq的数据可视化大屏展示炫酷看板[附源码]
  14. ABP-Hangfire定时任务
  15. Nginx 重写功能(location / rewrite)
  16. 新型自动站业务用计算机采用,探析新型自动气象站测报业务软件运行故障及解决对策...
  17. unity开发 HTC vive手柄控制 手柄上各个按钮的点击事件
  18. PTA 排序(快速排序,基数排序)
  19. accept4: too many open files; retrying in 1s
  20. 二十年目睹之怪现状:被Angelababy击垮的老戏骨们 zt

热门文章

  1. 普通最小二乘法的推导证明
  2. 计算机为什么检测不到u盘启动项,电脑无法识别U盘启动BIOS里面找不到U盘启动项...
  3. (论文笔记)An Attention Enhanced Graph Convolutional LSTM Network for Skeleton-Based Action Recognition
  4. vue 井号_使用Vue 2制作井字游戏:第1部分
  5. html倒计时的原理,JS实现活动精确倒计时 - 轩枫阁
  6. android dialog隐藏虚拟按键,Android应用开发之Android dialog 去除虚拟按键的解决方法...
  7. 练习:编写程序判断当前系统状态
  8. android 自定义图片合集(自定义控件)
  9. php网页跳转支付宝app,php 做支付宝电脑网站和app支付
  10. JDK8 Instant类的使用和LocalDate,LocalTime 和 LocalDateTime的介绍。