当前位置: 首页 > news >正文

使用open cv进行角度测量

使用open cv进行角度测量

用了一点初中数学的知识,准确度,跟鼠标点的准不准有关系,话不多说直接上代码

import cv2
import mathpath = "test.jpg"
img = cv2.imread(path)
pointsList = []def mousePoint(event, x, y, flags, params):# 如果鼠标左键按下if event == cv2.EVENT_LBUTTONDOWN:size = len(pointsList)if size != 0 and size % 3 != 0:cv2.line(img, tuple(pointsList[round((size - 1)/3) * 3]), (x, y), (0, 0, 255), 2)cv2.circle(img, (x, y), 5, (0, 0, 255), cv2.FILLED)pointsList.append([x, y])# 计算斜率
def gradient(pt1, pt2):return (pt2[1] - pt1[1])/(pt2[0] - pt1[0])def getAngle(pointsList):# 最后三个点pt1, pt2, pt3 = pointsList[-3:]# 计算两条直线的斜率m1 = gradient(pt1, pt2)m2 = gradient(pt1, pt3)angR = math.atan((m2 - m1)/(1 + (m2 * m1)))# 去掉小数,将弧度转换成角度angD = round(math.degrees(angR))cv2.putText(img, str(angD), ((pt1[0] - 40), pt1[1] - 20), cv2.FONT_HERSHEY_COMPLEX, 1.5, (0, 0, 255), 2)while True:if len(pointsList) % 3 == 0 and len(pointsList) != 0:getAngle(pointsList)cv2.imshow("Image", img)# 设置鼠标回调函数cv2.setMouseCallback("Image", mousePoint)# 是否在1毫秒内按下了'q'键if cv2.waitKey(1) & 0xFF == ord('q'):pointsList = []img = cv2.imread(path)

效果

image-20230820181445172

相关文章:

使用open cv进行角度测量

使用open cv进行角度测量 用了一点初中数学的知识,准确度,跟鼠标点的准不准有关系,话不多说直接上代码 import cv2 import mathpath "test.jpg" img cv2.imread(path) pointsList []def mousePoint(event, x, y, flags, param…...

java 线程池实现多线程处理list数据

newFixedThreadPool线程池实现多线程 List<PackageAgreementEntity> entityList new CopyOnWriteArrayList<>();//多线程 10个线程//int threadNum 10;int listSize 300;List<List<PackageAgreementDto>> splitData Lists.partition(packageAgre…...

Centos安装Docker

Centos安装 Docker 从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。 Docker CE 即社区免费版&#xff0c;Docker EE 即企业版&#xff0c;强调安全&#xff0c;但需付费使用。 本文介绍 Docker CE 的安装使用。 移除旧的版本&#x…...

Unity启动项目无反应的解决

文章首发见博客&#xff1a;https://mwhls.top/4803.html。 无图/格式错误/后续更新请见首发页。 更多更新请到mwhls.top查看 欢迎留言提问或批评建议&#xff0c;私信不回。 摘要&#xff1a;通过退还并重新载入许可证以解决Unity项目启动无反应问题。 场景 Unity Hub启动项目…...

2.3 opensbi: riscv: opensbi源码解析

文章目录 3. sbi_init()函数4. init_coldboot()函数4.1 sbi_scratch_init()函数4.2 sbi_domain_init()函数4.3 sbi_scratch_alloc_offset()函数4.4 sbi_hsm_init()函数4.5 sbi_platform_early_init()函数3. sbi_init()函数 函数位置:lib/sbi/sbi_init.c函数参数:scratch为每个…...

点破ResNet残差网络的精髓

卷积神经网络在实际训练过程中&#xff0c;不可避免会遇到一个问题&#xff1a;随着网络层数的增加&#xff0c;模型会发生退化。    换句话说&#xff0c;并不是网络层数越多越好&#xff0c;为什么会这样&#xff1f; 不是说网络越深&#xff0c;提取的特征越多&#xff…...

Ubuntu服务器service版本初始化

下载 下载路径 官网&#xff1a;https://cn.ubuntu.com/ 下载路径&#xff1a;https://cn.ubuntu.com/download 服务器&#xff1a;https://cn.ubuntu.com/download/server/step1 点击下载&#xff08;22.04.3&#xff09;&#xff1a;https://cn.ubuntu.com/download/server…...

re学习(33)攻防世界-secret-galaxy-300(脑洞题)

下载压缩包&#xff1a; 下载链接&#xff1a;https://adworld.xctf.org.cn/challenges/list 参考文章&#xff1a;攻防世界逆向高手题之secret-galaxy-300_沐一 林的博客-CSDN博客 发现这只是三个同一类型文件的三个不同版本而已&#xff0c;一个windows32位exe&#xff0…...

Mybatis Plus中使用LambdaQueryWrapper进行分页以及模糊查询对比传统XML方式进行分页

传统的XML分页以及模糊查询操作 传统的XML方式只能使用limit以及offset进行分页&#xff0c;通过判断name和bindState是否为空&#xff0c;不为空则拼接条件。 List<SanitationCompanyStaff> getSanitationStaffInfo(Param("name") String name,Param("bi…...

vue中push和resolve的区别

import { useRouter } from vue-router;const routeuseRouter()route.push({path:/test,query:{name:1}})import { useRouter } from vue-router;const routeuseRouter()const urlroute.resolve({path:/test,query:{name:1}})window.open(url.href)比较上述代码会发现,resolve能…...

详解RFC 3550文档-1

1. 介绍 rfc 3550描述了实时传输协议RTP。RTP提供端到端的网络传输功能,适用于通过组播或单播网络服务传输实时数据(如音频、视频或仿真数据)的应用。 TP本身不提供任何机制来确保及时交付或提供其他服务质量保证,而是依赖于较低层的服务来完成这些工作。它不保证传输或防止…...

Go 与 Rust

目录 1. Go 与 Rust 1. Go 与 Rust 一位挺 Rust 的网友说道: “我也为这个选择烦恼了很久。最终 Rust 胜出了。首先, 我感觉 Rust 更接近于以前 Pascal 时代的东西, 你可以控制一切; 其次, 如果 wasm 和相关技术大爆发, Rust 将是一个更安全的选择; 然后, 我们已经有了 Python…...

Android Studio实现读取本地相册文件并展示

目录 原文链接效果 代码activity_main.xmlMainActivity 原文链接 效果 代码 activity_main.xml 需要有一个按钮和image来展示图片 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk…...

python的全局解释锁(GIL)

一、介绍 全局解释锁&#xff08;Global Interpreter Lock&#xff0c;GIL&#xff09;是在某些编程语言的解释器中使用的一种机制。在Python中&#xff0c;GIL是为了保证解释器线程安全而引入的。 GIL的作用是在解释器的执行过程中&#xff0c;确保同一时间只有一个线程可以…...

小程序swiper一个轮播显示一个半内容且实现无缝滚动

效果图&#xff1a; wxml&#xff08;无缝滚动&#xff1a;circular"true"&#xff09;&#xff1a; <!--components/tool_version/tool_version.wxml--> <view class"tool-version"><swiper class"tool-version-swiper" circul…...

【自然语言处理】关系抽取 —— SimpleRE 讲解

SimpleRE 论文信息 标题:An Embarrassingly Simple Model for Dialogue Relation Extraction 作者:Fuzhao Xue 期刊:ICASSP 2022 发布时间与更新时间:2020.12.27 2022.01.25 主题:自然语言处理、关系抽取、对话场景、BERT arXiv:[2012.13873] An Embarrassingly Simple M…...

【O2O领域】Axure外卖订餐骑手端APP原型图,外卖众包配送原型设计图

作品概况 页面数量&#xff1a;共 110 页 兼容软件&#xff1a;Axure RP 9/10&#xff0c;不支持低版本 应用领域&#xff1a;外卖配送、生鲜配送 作品申明&#xff1a;页面内容仅用于功能演示&#xff0c;无实际功能 作品特色 本品为外卖订餐骑手端APP原型设计图&#x…...

DataGridView keydown事件无法在C#中工作

原因&#xff1a;单元格内编辑文本时,DataGridView keydown事件不起作用。每当单元格处于编辑模式时,其托管控件就会接收KeyDown事件而不是DataGridView包含它的父级.这就是为什么当单元格未处于编辑模式时(即使它被选中),键盘快捷键正常工作,因为DataGridView控件本身会收到Ke…...

【ElasticSearch】一键安装ElasticSearch与Kibana以及解决遇到的问题

目录 一、安装ES 二、安装Kibana 三、遇到的问题 一、安装ES 按顺序复制即可 docker network create es-net # 创建网络 docker pull images:7.12.1 # 拉取镜像 mkdir -p /root/es/data # 创建数据卷 mkdir -p /root/es/plugins # 创建数据卷 chmod 777 /root/es/** # 设置权…...

电商数据采集和数据分析

不管是做渠道价格的治理&#xff0c;还是做窜货、假货的打击&#xff0c;都需要品牌对线上数据尽数掌握&#xff0c;准确的数据是驱动服务的关键&#xff0c;所以做好电商数据的采集和分析非常重要。 当线上链接较多&#xff0c;品牌又需要监测线上数据时&#xff0c;单靠人工肯…...

Qwen3.5-4B-Claude-Opus基础教程:llama.cpp量化参数对精度影响实测

Qwen3.5-4B-Claude-Opus基础教程&#xff1a;llama.cpp量化参数对精度影响实测 1. 模型介绍 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是基于Qwen3.5-4B的推理蒸馏模型&#xff0c;特别强化了结构化分析、分步骤回答以及代码与逻辑类问题的处理能力。该版本以GGU…...

滴滴盖亚计划ETA数据集实战:如何用Python处理智能交通数据(附完整代码)

滴滴盖亚ETA数据集实战&#xff1a;Python智能交通数据处理全流程解析 引言&#xff1a;智能交通时代的ETA技术价值 在早高峰的深圳深南大道上&#xff0c;网约车司机王师傅刚接单就面临抉择&#xff1a;系统推荐的三条路线中&#xff0c;哪一条能最快到达乘客上车点&#xf…...

一体机-显控终端 国产化嵌入式处理板卡 产品规格说明书

一、产品概述MB-FT24A02是一款专为工业嵌入式、车载人机交互、国产化终端替代等场景设计的全国产化高性能处理板卡&#xff0c;采用紧凑型PCB设计&#xff0c;核心搭载飞腾FT-2000/4国产处理器&#xff0c;搭配飞腾X100专用国产桥片&#xff0c;构建全链路自主可控硬件平台&…...

论文降AI率完整操作教程:检测→定位→降AI→复查全流程详解

论文降AI率完整操作教程&#xff1a;检测→定位→降AI→复查全流程详解 很多同学一听"降AI率"就觉得很复杂。网上教程要么讲得太笼统&#xff08;“用工具处理一下就好了”&#xff09;&#xff0c;要么一上来就推荐工具却不讲完整流程。 这篇教程不一样。我把降AI率…...

mPLUG在金融领域的应用:票据智能识别系统

mPLUG在金融领域的应用&#xff1a;票据智能识别系统 1. 项目背景与需求 金融行业每天都要处理海量的票据单据&#xff0c;从银行的支票、汇票&#xff0c;到保险公司的保单、理赔单&#xff0c;再到企业的发票、报销单。传统的人工处理方式不仅效率低下&#xff0c;还容易出…...

门户网站被入侵了怎么办?从紧急止损到重建免疫的完整作战手册

当监控警报响起&#xff0c;发现服务器存在异常进程、网站首页或核心栏目内容被恶意篡改、或数据库出现不明查询时&#xff0c;一个可怕的现实摆在眼前&#xff1a;您的门户网站已经被入侵了。门户网站作为企业或机构的官方形象窗口&#xff0c;一旦被入侵&#xff0c;不仅直接…...

解放你的音乐库:NCMconverter音频格式转换全攻略

解放你的音乐库&#xff1a;NCMconverter音频格式转换全攻略 【免费下载链接】NCMconverter NCMconverter将ncm文件转换为mp3或者flac文件 项目地址: https://gitcode.com/gh_mirrors/nc/NCMconverter 当你下载了喜爱的音乐却发现是无法播放的NCM格式时&#xff0c;当你…...

FireRedASR Pro Java集成开发指南:SpringBoot微服务语音处理实战

FireRedASR Pro Java集成开发指南&#xff1a;SpringBoot微服务语音处理实战 如果你是一个Java后端开发者&#xff0c;最近接到了要给系统加上语音识别功能的需求&#xff0c;比如处理用户上传的客服录音&#xff0c;或者分析会议纪要&#xff0c;那你可能正在寻找一个既稳定又…...

强化学习算法实战:从Q-learning到PPO,如何选择最适合你的游戏AI开发?

强化学习算法实战&#xff1a;从Q-learning到PPO&#xff0c;如何选择最适合你的游戏AI开发&#xff1f; 在游戏开发领域&#xff0c;AI角色的行为决策直接影响玩家体验。传统规则式AI已无法满足现代游戏对复杂性和适应性的需求&#xff0c;而强化学习&#xff08;Reinforcemen…...

智能邮件管家:OpenClaw+GLM-4.7-Flash自动化邮件处理系统

智能邮件管家&#xff1a;OpenClawGLM-4.7-Flash自动化邮件处理系统 1. 为什么需要自动化邮件处理 作为每天需要处理上百封邮件的商务人士&#xff0c;我发现自己陷入了"邮件黑洞"——早上打开邮箱就像打开潘多拉魔盒&#xff0c;重要客户询盘、会议邀请、账单通知…...