[python opencv 计算机视觉零基础到实战] 十七、用鼠标画画

一、学习目标

  1. 了解长轴和短轴参数
  2. 了解旋转角度参数
  3. 了解起始角度参数
  4. 了解终止角度参数

二、深入了解OpenCV的ellipse方法

2.1 纵横

椭圆的绘制方法在上一节中我们已经知道了是使用ellipse,ellipse的函数原型如下,为了清晰认识ellipse方法,在此使用了中文代替参数:

ellipse(image, 椭圆的中心坐标, 长轴和短轴, 旋转角度, 起始角度, 终止角度, color ,粗细)

我们依旧沿用上一节的代码,如下:

import cv2
import numpy as npimg=np.zeros((400,400,3), np.uint8)
cv2.ellipse(img, (200, 200), (170, 50), 0, 0, 360, (255, 255, 255), 3)cv2.imshow("Image", img)
cv2.waitKey (0)
cv2.destroyAllWindows()

我们的ellipse方法如下:

cv2.ellipse(img, (200, 200), (170, 50), 0, 0, 360, (255, 255, 255), 3)

其中(200, 200)为圆心坐标,(170, 50)为长短轴,0, 0为旋转角度以及起始角度,360为终止角度。颜色和粗细分别为(255, 255, 255)以及3.我们我们先查看当前绘制出来的图形是什么样子的,结果如下:

那我们更改(170, 50)为(50, 170)呢?结果如下:

再次我们很清楚了(170, 50)中的170为横向长度,50为纵向长度,我们还可以将170,50改成170,10,这个时候应该可以更明显的看的出效果,应该170长度不变,10变得更扁了。结果如下:

我们更改170为100,应该它的横向长度也会变短,将170的10改为70的10,结果如下:

cv2.ellipse(img, (200, 200), (70, 10), 0, 0, 360, (255, 255, 255), 3)

我们继续按照以上代码更改数据来深入的理解ellipse方法。这次我们更改选择角度,代码如下:

cv2.ellipse(img, (200, 200), (70, 10), 0, 0, 360, (255, 255, 255), 3)

旋转角度

将第一个0,旋转角度改为10,看看有什么效果:

cv2.ellipse(img, (200, 200), (70, 10), 10, 0, 360, (255, 255, 255), 3)


改为-10,结果如下:

这个时候可以得出,这个该旋转角度如图所示,是指在绘制这个圆的时候的选择方向:

我们现在将绘制角度0改为180:

cv2.ellipse(img, (200, 200), (70, 10), 0, 180, 360, (255, 255, 255), 3)

得到的结果如下:

绘制角度

再将180改为90,结果如下:
这个时候得知,这个绘制角度是指原型在右下角与水平形成的角的起始绘制角度位置,如下图所示:

起始绘制角度

这个时候就很清楚这个起始绘制角度的用法了。接下来我们查看终止角度的用法。我们将起始绘制角度置零,并且将终止角度改成180,代码如下:

cv2.ellipse(img, (200, 200), (70, 10), 0, 0, 180, (255, 255, 255), 3)

结果如下:

这时再将该结束绘制角度更改为270,结果如下:

这个时候就很明白了,原型与水平线形成的平角开始,顺时针绘制,绘制180则到180度位置停止绘制,绘制270则到270度开始停止,如下图所示:

何绘制半个圆

那如何绘制半个圆呢?这个很简单,只需要保持横纵距离长短一致,并且绘制的角度为180即可:

cv2.ellipse(img, (200, 200), (70, 70), 0, 0, 180, (255, 255, 255), 1)

可是这个时候的半圆并不好看:

感觉只有一个弧,那怎么办呢?很简单,我们进行填充就可以了,如下:

cv2.ellipse(img, (200, 200), (70, 70), 0, 0, 180, (255, 255, 255), -1)

这个时候将线段的长度更改为负数就可以了,结果如下:

该系列首发于ebaina

三、总结

  1. 了解了长轴和短轴参数跟纵横的关系
  2. 了解旋转角度参数绘制圆形
  3. 了解起始角度参数绘制圆形
  4. 了解终止角度参数绘制圆形

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

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

相关文章

Microsoft Build 2022 到来,开发者们做好准备了吗?

Microsoft Build 2022 将会在5月24日 - 5月26日正式举行,作为开发者的你是否和我一样期待本次的 Build,它会带来什么的技术革新以及黑科技呢?下面我就针对今年 Build 的几个主题结合相关技术来谈谈我对 Build 的期待。开发技术和相关工具今年…

【测绘程序设计】视距测量神器V1.0(附源程序)

神器预览: 一、视距测量概念 视距测量是利用水准仪的望远镜内十字丝分划板上的视距丝在视距尺(水准尺)上读数,根据光学和几何学原理,同时测定仪器到地面点的水平距离和高差的一种方法。 视距测量具有操作简便、速度快、不受地面起伏变化的影响的优点,被广泛应用于碎部测…

补作业:随机生成二元四则运算

四则运算代码如下&#xff0c;基础不好&#xff0c;刚完成作业&#xff0c;希望老师多给点平时成绩&#xff0c;谢谢老师&#xff01;#include<stdio.h>#include<stdlib.h>#include<time.h>int right0,wrong0;int a,b,c,d;/*加法运算*/void add(){int i,j;fo…

java 从数据库取值_java 连接数据库取值问题

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{//TODOAuto-generatedmethodstubXzdatasqlToolnewXzdata();//初始化并...public void doGet(HttpServletRequest request,HttpServletResponse response) throws I…

条件表达式

1.python中&#xff1a; a 1b 2 if a>1 else 3 2.C语言中&#xff1a;max (a>b)?a:b; 说明&#xff1a;条件运算符优先于赋值运算符 也可以这样写&#xff1a;a>b? a:c>d? c:d / a>b? (a100):(b100)转载于:https://www.cnblogs.com/yjw9520/p/4841301.ht

oracle导出数据库中表出现导出报错(EXP-00003)未找到段 (0,0) 的存储定义

前两天在使用oracle数据库&#xff0c;使用dba用户利用PL/SQL 中的tool中export table导出表结构时&#xff0c;出现了如下问题&#xff1a;好多张表“报错&#xff08;EXP-00003&#xff09;未找到段 (0,0) 的存储定义 ”&#xff0c;出现这样的结果&#xff0c;经过查找相关资…

Android Studio之查找当前类的位置图标没了

1 问题 我们知道在Android studio里面如果想快速看到该文件所在的目录位置&#xff0c;点击这个图标 现在这个图标没了&#xff0c;找不到了 2 解决办法 把下面的Autoscroll from Source的勾去掉就行。

[python opencv 计算机视觉零基础到实战] 十八、用鼠标进行画画

一、学习目标 了解如何在图片中加入文字了解如何使用鼠标进行图像绘制 二、了解如何通过鼠标进行图像绘制 2.1 了解putText方法的使用 putText方法接收图像&#xff0c;文字内容&#xff0c; 坐标 &#xff0c;字体&#xff0c;大小&#xff0c;颜色&#xff0c;字体厚度这…

【测绘程序设计】坐标正算神器V1.0(附C/C#/VB源程序)

坐标正算,就是根据直线的边长、坐标方位角和一个端点的坐标,计算直线另一个端点的坐标的工作。本文用C#语言和VB语言实现坐标正算,编写坐标正算神器。 计算实例: 实例1,设直线AB的边长DAB和一个端点A的坐标XA、YA为已知,则直线另一个端点B的坐标为: XB=XA+ΔXAB YB=YA+…

2.2 PostgreSQL 概念

PostgreSQL 是一种关系型数据库管理系统(RDBMS)。这意味着它是一种用于管理那些以关系形式存储数据的系统。关系实际上是表的数学称呼。今天&#xff0c;把数据存储在表里的概念已经快成固有的常识了&#xff0c;但是还有其它一些方法用于组织数据库。在类 Unix 操作系统上的文…

Blazor University (22)路由 —— 定义路由

原文链接&#xff1a;https://blazor-university.com/routing/路由与标准 ASP.NET MVC 一样&#xff0c;Blazor 路由是一种用于检查浏览器 URL 并将其匹配到要呈现的页面的技术。路由比简单地将 URL 匹配到页面更灵活。它允许我们根据文本模式进行匹配&#xff0c;例如&#xf…

Linux文件I/O编程(二)lseek函数

文件I/O编程处理open、read、write、close&#xff0c;等必要函数对文件进行读写操作外&#xff0c;lseek、fcntl也是I/O编程很重要的函数。lseek函数lseek函数主要用来移动当前读写位置&#xff0c;第一个参数是文件描述符fd&#xff0c;第二个参数是偏移距离&#xff0c;第三…

[python opencv 计算机视觉零基础到实战] 十九、简易绘画板制作

一、学习目标 了解事件编写一个简易绘画板 二、了解如何制作简易绘画板 2.1 了解鼠标多种事件 上一节我们简单的使用opencv的图形绘制方法&#xff0c;用鼠标绘制了一些内容。上一节所响应的是简单的双击事件EVENT_LBUTTONDBLCLK&#xff0c;在OpenCV的鼠标事件中还有很多。…

Web App 和 Native App,哪个是趋势?

2019独角兽企业重金招聘Python工程师标准>>> Web App 和 Native App&#xff0c;哪个是趋势&#xff1f; https://www.zhihu.com/question/19558750 WebAPP与原生APP的交互设计区别 http://www.woshipm.com/ucd/132869.html Web App 开发使用哪种框架比较好&#xf…

基于天地图的应用服务系统设计开发—以甘肃高校招生服务为例

“天地图”是国家测绘地理信息局建设的地理信息综合服务网站。它是“数字中国”的重要组成部分,是国家地理信息公共服务平台的公众版。“天地图”的目的在于促进地理信息资源共享和高效利用,提高测绘地理信息公共服务能力和水平,改进测绘地理信息成果的服务方式,更好地满足…

查缺补漏系统学习 EF Core 6 - 修改实体数据

推荐关注「码侠江湖」加星标&#xff0c;时刻不忘江湖事这是 EF Core 系列的第六篇文章&#xff0c;上一篇文章讲述了 EF Core 中的原始 SQL 语句查询。这篇文章讲一讲 EF Core 如何修改实体数据。点击上方或后方蓝字&#xff0c;阅读 EF Core 系列合集。实体状态在开始学习 EF…

在AngularJS的controller外部直接获取$scope

为了防止无良网站的爬虫抓取文章&#xff0c;特此标识&#xff0c;转载请注明文章出处。LaplaceDemon/SJQ。 http://www.cnblogs.com/shijiaqi1066/p/5560843.html 以前利用webqq的写过一个自动发消息的脚本&#xff0c;由于那时webqq还直接使用类似jQuery操作DOM的技术&#x…

js pug 代码_pug模版学习(一)

标签按照html的缩进格式doctype htmlhtmlheadtitlebody编译结果&#xff1a;文本p 这是文本| 这是文本p.这是文本编译结果&#xff1a;这是文本这是文本这是文本属性设置class名跟id名(默认是div)p.foop#foop#foo.foo.foo#foo编译结果&#xff1a;其他属性&#xff1a;a(href&q…

Upgrade Hole puncher Mathematical Modeling

// AntColony.cpp : 定义控制台应用程序的入口点。 //#include<iostream> #include<math.h> #include<time.h> #include<stdio.h> #include <fstream> #include <string> #include <iostream> #include <vector>using n…