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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;行为型模式需针对分布式特性进行适应性设计。本文从观察者、策略、命令、责任链、状…