[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.pswp.cn/news/287479.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287479.shtml
英文地址,請注明出處:http://en.pswp.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…