python學opencv|讀取圖像(二十七)使用time()繪制彈球動畫

【1】引言

前序已經學習了python+opencv畫線段、圓形、矩形、多邊形和文字的相關操作,具體文章鏈接包括且不限于:

python學opencv|讀取圖像(十八)使用cv2.line創造線段_cv2. 畫線段-CSDN博客

python學opencv|讀取圖像(二十二)使用cv2.polylines()繪制多邊形-CSDN博客

python學opencv|讀取圖像(二十五)使用cv2.putText()繪制文字進階-垂直鏡像文字-CSDN博客

在此基礎上,我們更進一步,嘗試繪制會動的彈球。

【2】技術分析

要想繪制彈球,首先要繪制圓形,所以要充分掌握繪制圓形的操作:

python學opencv|讀取圖像(二十)使用cv2.circle()繪制圓形_cv2.circle()函數-CSDN博客

在此基礎上,我們需要通過使用循環函數來創建動態的圓心,比如常見的while()函數。

然后我們還要用time()函數還控制輸出幀率,這樣才能看到動畫。

【3】代碼測試

首先我們給出完整代碼,然后再詳細分析:

import cv2 as cv # 引入CV模塊
import time #引入time模塊
import numpy as np #引入numpy模塊width,height=500,500 #輸入畫布大小
r=20 #設定圓心大小
x=r+200 #設定初始X軸坐標
y=r+200 #設定初始Y軸坐標
x_v=y_v=5 #設定初始移動速度while cv.waitKey(1)==-1:if x>0.85*(width) or x<0.15*(width): #在畫布寬度(15%-85%)的區間內,彈球可直線運行x_v *=-1 #在畫布寬度的15%或者85%的位置,彈球將反向直線運行if y > 0.85*(height) or y < 0.15*(height) : #在畫布高度(15%-85%)的區間內,彈球可直線運行y_v *= -1 #在畫布高度的15%或者85%的位置,彈球將反向直線運行x+=x_v #圓心x隨著速度變化y+=y_v #圓心y隨著速度變化canvas=np.ones((width,height,3),np.uint8)*255 #繪制畫布cv.circle(canvas,(x,y),r,(255,0,0),-1) #繪制圓形#cv.imshow('qiuqiu', canvas)  # 在屏幕展示繪制圓形的效果time.sleep(1/1500) #每秒1500幀#cv.waitKey()  # 圖像不會自動關閉
cv.destroyAllWindows()  # 釋放所有窗口

首先是引入相關模塊:

import cv2 as cv # 引入CV模塊
import time #引入time模塊
import numpy as np #引入numpy模塊

然后約定好繪制圓形的初始數據:

width,height=500,500 #輸入畫布大小
r=20 #設定圓心大小
x=r+200 #設定初始X軸坐標
y=r+200 #設定初始Y軸坐標
x_v=y_v=5 #設定初始移動速度

然后使用while函數創造會反向的彈球:

while cv.waitKey(1)==-1:if x>0.85*(width) or x<0.15*(width): #在畫布寬度(15%-85%)的區間內,彈球可直線運行x_v *=-1 #在畫布寬度的15%或者85%的位置,彈球將反向直線運行if y > 0.85*(height) or y < 0.15*(height) : #在畫布高度(15%-85%)的區間內,彈球可直線運行y_v *= -1 #在畫布高度的15%或者85%的位置,彈球將反向直線運行x+=x_v #圓心x隨著速度變化y+=y_v #圓心y隨著速度變化canvas=np.ones((width,height,3),np.uint8)*255 #繪制畫布cv.circle(canvas,(x,y),r,(255,0,0),-1) #繪制圓形#cv.imshow('qiuqiu', canvas)  # 在屏幕展示繪制圓形的效果time.sleep(1/1500) #每秒1500幀
cv.destroyAllWindows()  # 釋放所有窗口

運行代碼后獲得的彈球動畫為:

python+opencv簡單彈球

【4】細節說明

在while()函數中,使用x>0.85*(width) or x<0.15*(width)和y > 0.85*(height) or y < 0.15*(height)約定了彈球活動的范圍,這樣可以在比較清晰的界面中看到球體反彈。

此外我們會發現沒有使用cv2.imwrite()函數來保存圖像,因為保存后的圖像并不容易打開,所以暫時未啟用這個函數。

【5】總結

掌握了python+opencv繪制簡單彈球動畫的技巧。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65306.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65306.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65306.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

rabbitmq——歲月云實戰筆記

1 rabbitmq設計 生產者并不是直接將消息投遞到queue&#xff0c;而是發送給exchange&#xff0c;由exchange根據type的規則來選定投遞的queue&#xff0c;這樣消息設計在生產者和消費者就實現解耦。 rabbitmq會給沒有type預定義一些exchage&#xff0c;而實際我們卻應該使用自己…

2.系統學習-邏輯回歸

邏輯回歸 前言最大似然估計概率似然函數(likelihood function)最大似然估計 邏輯回歸邏輯回歸的似然函數與梯度 分類問題常用評價指標項目案例拓展內容作業 前言 邏輯回歸與線性回歸均屬于廣義線性模型&#xff0c;區別在于線性回歸用于解決回歸問題&#xff0c;例如身高、銷量…

記錄一次電腦被入侵用來挖礦的過程(Trojan、Miner、Hack、turminoob)

文章目錄 0、總結1、背景2、端倪3、有個微軟的系統更新&#xff0c;就想著更新看看&#xff08;能否沖掉問題&#xff09;4、更新沒成功&#xff0c;自動重啟電腦5、風險文件&#xff08;好家伙命名還挺規范&#xff0c;一看名字就知道出問題了&#xff09;6、開機有一些注冊表…

行為樹詳解(6)——黑板模式

【動作節點數據共享】 行為樹中需要的參數可以來自游戲中的各個模塊&#xff0c;如果僅需從多個模塊獲取少量參數&#xff0c;那么可以直接在代碼中調用其他模塊的單例繼而層層調用獲取數據。 如果獲取的參數量很大&#xff0c;從架構上看&#xff0c;我們需要通過加一個中間…

阿里云 人工智能與機器學習

阿里云的 人工智能&#xff08;AI&#xff09;與機器學習&#xff08;ML&#xff09; 服務為企業提供了全面的AI解決方案&#xff0c;幫助用戶在多個行業實現數據智能化&#xff0c;提升決策效率&#xff0c;推動業務創新。阿里云通過先進的技術和豐富的工具&#xff0c;支持用…

如果Adobe 退出中國后怎么辦

最近聽說Adobe要退出中國了?那咱們的設計師們可得好好想想怎么搞到正版軟件了。別急&#xff0c;今天教大家一個超酷的福利——Edu郵箱&#xff01; Edu郵箱是什么&#xff1f;有什么好處&#xff1f; Edu郵箱就是學校給學生和老師們發的郵箱&#xff0c;一般結尾是.edu。有了…

Structured-Streaming集成Kafka

一、上下文 《Structured-Streaming初識》博客中已經初步認識了Structured-Streaming&#xff0c;Kafka作為目前最流行的一個分布式的實時流消息系統&#xff0c;是眾多實時流處理框架的最優數據源之一。下面我們就跟著官方例子來看看Structured-Streaming是如何集成Kafka的&a…

Spring Boot 項目中集成 Kafka-03

在 Spring Boot 項目中集成 Kafka 有多種方式&#xff0c;適應不同的應用場景和需求。以下將詳細介紹幾種常用的集成方法&#xff0c;包括&#xff1a; 使用 Spring Kafka (KafkaTemplate 和 KafkaListener)使用 Spring Cloud Stream 與 Kafka Binder使用 Spring for Apache K…

生物醫學信號處理--緒論

前言 參考書籍&#xff1a;劉海龍&#xff0c;生物醫學信號處理&#xff0c;化學工業出版社 生物醫學信號分類 1、由生理過程自發或者誘發產生的電生理信號和非電生理信號 ? 電生理信號&#xff1a;ECG/心電、EEG/腦電、EMG/肌電、 EGG/胃電、 EOG/眼電 ? 非電生理信號&am…

unity 播放 序列幀圖片 動畫

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、方法一&#xff1a;代碼控制播放序列幀1、設置圖片屬性2、創建Image組件3、簡單的代碼控制4、掛載代碼并賦值 二、方法二&#xff1a;直接使用1.Image上添加…

QT c++ 自定義按鈕類 加載圖片 美化按鈕

如果你有需要利用圖片美化按鈕的情況&#xff0c;本文能幫助你。 鼠標左鍵按下按鈕和松開&#xff0c;按鈕顯示不同的圖片。 1.按鈕類 //因為此類比較簡單&#xff0c;1個頭文件搞定&#xff0c;沒有cpp文件 #ifndef CUSTOMBUTTON_H #define CUSTOMBUTTON_H #include <Q…

web漏洞之文件包含漏洞

一、文件包含漏洞 1、把DVWA頁面改為low級別&#xff0c;然后點擊File Inclusion頁面 文件包含漏洞有四種include()/require()/include_once()/require_once() 常見的文件包含漏洞代碼如下 <?php$file$_GET[filename]; filename隨意定義include($file); ?> -----…

小程序與物聯網(IoT)融合:開啟智能生活新篇章

一、引言 隨著移動互聯網技術的飛速發展&#xff0c;小程序作為一種輕量級的應用形式&#xff0c;憑借其無需下載安裝、即用即走的特點&#xff0c;迅速滲透到人們生活的各個領域。與此同時&#xff0c;物聯網&#xff08;IoT&#xff09;技術也在不斷進步&#xff0c;將各種物…

Ubuntu無法創建python venv環境

排查步驟如下 1. python3 -m venv venv he virtual environment was not created successfully because ensurepip is not available. On Debian/Ubuntu systems, you need to install the python3-venv package using the following command.apt install python3.8-venvYou…

如何很快將文件轉換成另外一種編碼格式?編碼?按指定編碼格式編譯?如何檢測文件編碼格式?Java .class文件編碼和JVM運行期內存編碼?

如何很快將文件轉換成另外一種編碼格式? 利用VS Code右下角的"選擇編碼"功能&#xff0c;選擇"通過編碼保存"可以很方便將文件轉換成另外一種編碼格式。尤其&#xff0c;在測試w/ BOM或w/o BOM, 或者ANSI編碼和UTF編碼轉換&#xff0c;特別方便。VS文件另…

PCL點云庫入門——PCL庫點云特征之PFH點特征直方圖(Point Feature Histograms -PHF)

1、算法原理 PFH點&#xff08;Point Feature Histogram&#xff09;特征直方圖的原理涉及利用參數化查詢點與鄰域點之間的空間差異&#xff0c;并構建一個多維直方圖以捕捉點的k鄰域幾何屬性。這個高維超空間為特征表示提供了一個可度量的信息空間&#xff0c;對于點云對應曲面…

5. CSS引入方式

5.1 CSS的三種樣式 按照 CSS 樣式書寫的位置(或者引入的方式)&#xff0c;CSS樣式表可以分為三大類&#xff1a; 1.行內樣式表&#xff08;行內式&#xff09; 2.內部樣式表&#xff08;嵌入式&#xff09; 3. 外部樣式表&#xff08;鏈接式&#xff09; 5.2 內部樣式表 …

為什么ip屬地一會河南一會江蘇

在使用互聯網的過程中&#xff0c;許多用戶可能會遇到這樣一個問題&#xff1a;自己的IP屬地一會兒顯示為河南&#xff0c;一會兒又變成了江蘇。這種現象可能會讓人感到困惑&#xff0c;甚至產生疑慮&#xff0c;擔心自己的網絡活動是否受到了某種影響。為了解答這一疑問&#…

unity3d-搞個場景漫游如何實現Alpha

要處理兩個問題&#xff1a; 如何設置地面人不掉下去 方法一、 游戲物體加剛體&#xff0c;將游戲物體和地面加collider。如果是地形&#xff0c;可以使用 Terrain Collider&#xff1b;如果是簡單的平面&#xff0c;可以添加 Box Collider 或者 Mesh Collider&#xff08;如果…