OpenCV —— 繪制圖形

在這里插入圖片描述
在這里插入圖片描述

😶?🌫?😶?🌫?😶?🌫?😶?🌫?Take your time ! 😶?🌫?😶?🌫?😶?🌫?😶?🌫?
💥個人主頁:🔥🔥🔥大魔王🔥🔥🔥
💥所屬專欄:🔥魔王的修煉之路–Computer vision🔥
如果你覺得這篇文章對你有幫助,請在文章結尾處留下你的點贊👍和關注💖,支持一下博主。同時記得收藏?這篇文章,方便以后重新閱讀。

文章目錄

  • 繪制圖形
  • 鼠標畫圖

繪制圖形

import cv2
import numpy as npcv2.namedWindow("img", cv2.WINDOW_NORMAL)
cv2.resizeWindow("img", 640, 480)img = np.zeros((480, 640, 3), np.uint8)
print(img.shape)# 繪制圖形
# 線寬:默認 1,負數表示填充
# 注意順序,(x,y),這里是 長 和 高!# 繪制線段
# 參數:目標圖像,起始點,結束點,顏色,線寬(線沒有填充,不能為 -1),線型
# 最后參數:線型,只有 line() 和 putText() 有這個參數,值為(4,8(默認),16(抗鋸齒,平滑))。
cv2.line(img, (10, 200), (200, 200), (0, 0, 255), 10, 4) 
cv2.line(img, (10, 300), (200, 300), (0, 0, 255), 10, 16) # 繪制矩形
# 參數:目標圖像,左上角坐標,右下角坐標,顏色,線寬
cv2.rectangle(img, (20, 10), (100, 150), (0, 0, 255), -1)
cv2.rectangle(img, (300, 150), (500, 250), (0, 0, 255), 1)# 繪制圓形
# 參數:目標圖像,圓心,半徑,顏色, 線寬
cv2.circle(img, (300, 300), 50, (0, 255, 0), 2)# 繪制橢圓
# 參數:目標圖像,中心點,長短軸一半,橢圓旋轉角度,從橢圓的多少角度開始,到多少角度結束,顏色,線寬
# 這里說的角度都是順時針的
cv2.ellipse(img, (400, 200), (100, 50), 45, 45, 90, (0, 255, 0), 1)# 繪制多邊形:多邊形填充需要專門的函數
# 參數:目標圖像,頂點列表(NumPy 數組格式),是否封閉路徑(首尾相連),顏色,線寬# 創建頂點列表
# np.array() 創建的數組原理:把給定的數據轉換成一個多維數組。
pts = np.array([(300, 10), (150,100), (450, 100)], np.int32) # 數據類型必須為 32位 有符號整型
# 有些函數接收的時候比較嚴格,需要調用 pts.reshape(-1, 1, 2),改變數組形狀(維度,方便函數調用)# 繪制多邊形
cv2.polylines(img, [pts], True, (0, 0, 255), 2) # 不能為 -1,填充需要專門的函數,單獨寫就行
# 第二個參數,需要一個點集列表,也就是可以同時繪制多個多邊形,即使只繪制一個,也是列表,需要加上中括號 []# 填充多邊形:單獨寫就行, 不需要提前繪制
# cv2.fillPoly(img, [pts], (0, 0, 255))
# 第二個參數,需要一個點集列表,也就是可以同時繪制多個多邊形,即使只繪制一個,也是列表,需要加上中括號 []# 繪制文本:目標圖像,要顯示文字,文字左下角坐標,字體類型,字號,顏色,線寬,線型
cv2.putText(img, "hahahhaha", (200, 200), cv2.FONT_HERSHEY_PLAIN, 3, (255, 255, 255))cv2.imshow("img", img)key = cv2.waitKey(0)cv2.destroyAllWindows()

鼠標畫圖

import cv2
import numpy as npcurshape = 0 # 記錄輸入的字符,用來判斷調用回調函數時繪制什么圖形
startpos = (0, 0) # 鼠標按下時的位置img = np.zeros((480, 640, 3), np.uint8)# 鼠標回調函數:第一個參數為鼠標事件,后面倆是鼠標當前坐標
def mouse_callback(event, x, y, flags, userdata): global curshape, startposif (event == cv2.EVENT_LBUTTONDOWN):startpos = (x, y)elif(event == cv2.EVENT_LBUTTONUP):if curshape == 0:cv2.line(img, startpos, (x, y), (0, 0, 255))elif curshape == 1:cv2.rectangle(img, startpos, (x, y), (0, 0, 255))elif curshape == 2:x_tmp = x - startpos[0]y_tmp = y - startpos[1]r = int((x_tmp ** 2 + y_tmp ** 2) ** 0.5) # 半徑必須為整型cv2.circle(img, startpos, r, (0, 0, 255))else:print("error: no shape!")cv2.namedWindow("win", cv2.WINDOW_NORMAL)# 設置鼠標回調:是一種注冊機制,以后只要這個窗口里鼠標有任何事件(移動、點擊、釋放等),我就調用你這個 mouse_callback 函數,并把事件類型、鼠標坐標等參數傳進去。
cv2.setMouseCallback("win", mouse_callback)while True:cv2.imshow("win", img)key = (cv2.waitKey(10) & 0xff) # 返回輸入字符的 ASCIIif key == ord('q'): # 記得將 字符串 轉為ASCII(整型)breakelif key == ord('a'):curshape = 0elif key == ord('s'):curshape = 1elif key == ord('d'):curshape = 2cv2.destroyAllWindows()
  • 博主長期更新,博主的目標是不斷提升閱讀體驗和內容質量,如果你喜歡博主的文章,請點個贊或者關注博主支持一波,我會更加努力的為你呈現精彩的內容。

🌈專欄推薦
😈魔王的修煉之路–C語言
😈魔王的修煉之路–數據結構
😈魔王的修煉之路–C++
😈魔王的修煉之路–QT
😈魔王的修煉之路–算法
😈魔王的修煉之路–力扣
😈魔王的修煉之路–牛客
😈魔王的修煉之路–劍指offer
😈魔王的修煉之路–Linux
😈魔王的修煉之路–Computer vision
更新不易,希望得到友友的三連支持一波。收藏這篇文章,意味著你將永久擁有它,無論何時何地,都可以立即找到重新閱讀;關注博主,意味著無論何時何地,博主將永久和你一起學習進步,為你帶來有價值的內容。

請添加圖片描述

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

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

相關文章

RHCE(4)

主:從:

網絡安全作業三

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>用戶登錄</title><link rel"style…

深入理解 ThreadLocal:從原理到最佳實踐

&#x1f4dd; 前言&#xff1a;為什么你需要了解 ThreadLocal&#xff1f;在多線程并發編程中&#xff0c;線程安全始終是一個繞不開的話題。我們常常需要為每個線程維護一份獨立的上下文數據&#xff0c;例如用戶信息、事務 ID、日志追蹤 ID 等。這些數據不能被多個線程共享&…

AD一張原理圖分成多張原理圖

先選中你要作為主級原理圖的那張原理圖&#xff0c;我這里是Sheet1,點擊設計&#xff08;D&#xff09;&#xff0c;再點擊create sheet symbol from sheet&#xff08;這個不能選錯&#xff09;快捷鍵&#xff1a;DY彈窗中選擇要加入的次級原理圖左擊鼠標放置重復上面的動作&a…

AI大模型資源

網址 https://sass.kupepoem.cn/ 登錄-選擇模型 打開上述網址后如下操作&#xff1a; 進入后&#xff0c;所有模型均可使用&#xff1a; o4-mini&#xff08;支持Deep Research深入研究&#xff09; 選擇o4-mini模型 選擇深度研究 要研究什么&#xff0c;對話直接輸入即可。…

論文閱讀--《Besting the Black-Box: Barrier Zones for Adversarial Example Defense》

好的&#xff0c;這是《Besting the Black-Box: Barrier Zones for Adversarial Example Defense》論文的中文翻譯&#xff1a;[文件名稱]: Besting_the_Black-Box_Barrier_Zones_for_Adversarial_Example_Defense.pdf [文件內容開始]第 1 頁 收稿日期&#xff1a;2021年10月1…

如何保證GPFS文件系統的強一致性

一、底層機制&#xff1a;分布式鎖與元數據管理GPFS 通過分布式鎖和集中式元數據管理的結合&#xff0c;確保數據和元數據的一致性&#xff1a;集中式元數據服務器&#xff08;MDS&#xff09;GPFS 采用主從架構的元數據管理&#xff0c;由指定節點&#xff08;或集群&#xff…

使用Docker+Nginx部署電商平臺項目(服務端+管理端+商城)

1.項目背景&#xff1a; 本項目作為小商場系統&#xff0c;涵蓋內容如下&#xff1a; litemall Spring Boot后端 Vue管理員前端 微信小程序用戶前端 Vue用戶移動端 1.1項目架構&#xff1a; 1.2項目技術棧&#xff1a; 本項目可以使用window運行jar包本地部署&#xff0c…

Java網絡編程入門:從基礎原理到實踐(二)

目錄 1. 網絡編程基礎&#xff1a;搞懂設備通信的底層邏輯 1.1 為啥需要網絡編程&#xff1f;—— 讓設備 “互通有無” 1.2 什么是網絡編程&#xff1f;—— 給數據 “定規矩、找路線” 1.3 網絡編程的基本概念&#xff1a;理清通信里的角色和流程 1.3.1 發送端和接收端 …

XSS內容分享

反射型XSS &#xff1a;反射型XSS 是非持久性、參數型的跨站腳本。反射型XSS 的JS 代碼在Web 應用的參數&#xff08;變量&#xff09;中&#xff0c;如搜索框的反射型XSS。在搜索框中&#xff0c;提交PoC[scriptalert(/xss/)/script]&#xff0c;點擊搜索&#xff0c;即可觸發…

電線桿距離居民區的安全距離【重要!!!】

10kV架空電線安全距離購房指南 中國大陸地區10kV架空電線距居民住宅需要滿足1.5米水平安全距離&#xff08;裸導線&#xff09;和6.5米垂直安全距離的國家強制標準。根據現行法規&#xff0c;10kV系統的電磁輻射水平極低&#xff0c;對居民健康影響可忽略不計&#xff0c;但購房…

河南萌新聯賽2025第(二)場:河南農業大學

我看到花兒在綻放 我聽到鳥兒在歌唱 我看到人們匆匆忙忙 我看到云朵在天上 我聽到小河在流淌 我看到人們漫步在路上 河南萌新聯賽2025第&#xff08;二&#xff09;場&#xff1a;河南農業大學 河南萌新聯賽2025第&#xff08;二&#xff09;場&#xff1a;河南農業大學_ACM/N…

unixbench系統性能測試

unixbench系統性能測試 環境&#xff1a; UnixBench: 6.0.0(2025-05-21)簡介 UnixBench 是一款經典的 Unix/Linux 系統性能測試工具&#xff0c;主要用于評估系統的CPU 運算能力、內存性能、多線程處理能力以及部分系統調用&#xff08;如進程創建、文件操作&#xff09;的效率…

上線了,自己開發的刷題小程序,vue3.0

嘿&#xff0c;最近我搞了個Java刷題的小程序&#xff0c;用Vue寫的&#xff0c;界面和功能都還挺完整的。今天就來跟大家聊聊這個小程序是怎么實現的&#xff0c;代碼里都藏著哪些小細節。 先看整體結構&#xff0c;我把整個頁面分成了幾個大塊&#xff1a;頂部導航欄、題目內…

嵌入式開發學習———Linux環境下數據結構學習(三)

單向循環鏈表單向循環鏈表是一種特殊的單向鏈表&#xff0c;尾節點的指針指向頭節點&#xff0c;形成一個閉環。適用于需要循環訪問的場景&#xff0c;如輪詢調度。結構特點&#xff1a;每個節點包含數據域和指向下一個節點的指針&#xff0c;尾節點的指針指向頭節點而非空值。…

【華為機試】684. 冗余連接

文章目錄684. 冗余連接描述示例 1示例 2提示解題思路核心分析問題轉化算法選擇策略1. 并查集 (Union-Find) - 推薦2. 深度優先搜索 (DFS)3. 拓撲排序算法實現詳解方法一&#xff1a;并查集 (Union-Find)方法二&#xff1a;深度優先搜索 (DFS)數學證明并查集算法正確性證明時間復…

Ⅹ—6.計算機二級綜合題7---10套

目錄 第7套 【填空題】 【修改題】 【設計題】 第8套 【填空題】 【修改題】 【設計題】 第9套 【填空題】 【修改題】 【設計題】 第10套 【填空題】 【修改題】 【設計題】 第7套 【填空題】 題目要求:給定程序中,函數fun的功能是:將形參s所指字符串中所…

【三橋君】大語言模型計算成本高,MoE如何有效降低成本?

? 你好&#xff0c;我是 ?三橋君? &#x1f4cc;本文介紹&#x1f4cc; >> 一、引言 在AI技術飛速發展的當下&#xff0c;大語言模型&#xff08;LLM&#xff09;的參數規模不斷增長&#xff0c;但隨之而來的計算成本問題也日益凸顯。如何在保持高效推理能力的同時擴…

Python游戲開發利器:Pygame從入門到實戰全解析

引言 Pygame是Python中最受歡迎的2D游戲開發庫之一&#xff0c;基于SDL&#xff08;Simple DirectMedia Layer&#xff09;構建&#xff0c;支持圖形渲染、音效處理、事件響應等核心功能。無論是開發簡單的休閑游戲&#xff0c;還是復雜的交互式應用&#xff0c;Pygame都能提供…

行為型模式-協作與交互機制

行為型模式聚焦于對象間的行為交互&#xff0c;通過規范對象協作方式提升系統的靈活性與可擴展性。在分布式系統中&#xff0c;由于多節點異步通信、網絡不可靠性及狀態一致性挑戰&#xff0c;行為型模式需針對分布式特性進行適應性設計。本文從觀察者、策略、命令、責任鏈、狀…