import cv2      # 导入opencv
import math     # 导入math库,计算角度时需要path = './Angle Finder/background.png'  # 测试样图相对路径
image = cv2.imread(path)             # 读入图片
pointsList = []                      # 创建一个点列表用于存储鼠标左键单击点的坐标# 定义鼠标点函数,参数为事件、点坐标的x和y值、标志、参数
def mousePoints(event, x, y, flags, params):# 若事件为按下鼠标左键if event == cv2.EVENT_LBUTTONDOWN:# 记录点列表的长度size = len(pointsList)# 当点列表中点的个数不为零且不能被3整除时if size != 0 and size % 3 != 0:# 在顶点与两端点之间划线cv2.line(image, tuple(pointsList[round((size-1)/3)*3]), (x, y), (0, 0, 255), 1)# 打印输出光标点击的位置    print(pointsList)# 将鼠标左键点击的点绘制在图像上cv2.circle(image, (x, y), 2, (0, 0, 255), cv2.FILLED)# 每次左键单击后都添加点的坐标pointsList.append([x, y])# 利用两个点的坐标计算直线斜率
def slope(point1, point2):return (point2[1]-point1[1])/(point2[0]-point1[0])# 计算角度
def getAngle(pointsList):point1, point2, point3 = pointsList[-3:]slope1 = slope(point1, point2)slope2 = slope(point1, point3)angR = math.atan((slope2-slope1)/(1+(slope2*slope1)))angD = round(math.degrees(angR))# 无法将类型 "int" 的对象转换为 "文本" 的 "str",必须将int类型的angD强制转换成string类型的文本cv2.putText(image, str(angD), (point1[0]-40, point1[1]-20), cv2.FONT_HERSHEY_COMPLEX, 1.5, (255, 0, 0), 2)while True:# 如果点列表长度能被3整除且不为0,即可以构成一个角,此时可以计算角度if len(pointsList) % 3 == 0 and len(pointsList) != 0:getAngle(pointsList)cv2.imshow('Image', image)#鼠标响应cv2.setMouseCallback('Image', mousePoints)# 点击q键,刷新点列表,再次导入图像if cv2.waitKey(1) & 0xFF == ord('q'):pointsList = []image = cv2.imread(path)

运行结果

基于opencv+python的角度测量相关推荐

  1. 基于 OpenCV + Python 的人脸识别上课签到系统

    目录 前言 安装第三方库 第一步:采集人脸图像 (1)修改姓名学号 (2)运行capture_face.py (3)采集人脸图像 (4)查看采集到的人脸图像 第二步:训练模型 第三步:识别签到 (1) ...

  2. C语言 | 基于卡尔曼滤波器的角度测量仪(MPU6050)

    ========================================== 博主github:https://github.com/MichaelBeechan 博主CSDN:https:/ ...

  3. 基于opencv+python实现数独

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 效果展示图 一.引入库 二.训练KNN模型 三.读取数独图片并提取轮廓 四.提取9*9的81小方格 五.解析数独数字 ...

  4. 基于Opencv+python的车流量检测项目

    目录 项目介绍 整体流程 调试环境 项目流程 1.预处理 2.汽车识别--去背景算法(KNN/MOG2) 3.统计车流量数目 结尾 源代码 测试视频资料 流程图 项目介绍 本次项目主要采用了传统视觉的 ...

  5. 基于opencv+python的车道检测技术

    针对自动驾驶系统的实际需求,我们需要一种能够兼顾速度.不同环境下高检测成功率和鲁棒性的车道识别算法.首先,因为停车场更多的是地下光线昏暗的情况需要提高车道线与周围环境的对比度,然后灰度化图像进行模糊降 ...

  6. 光流 | OpenCV中的Lucas-Kanade光流与稠密光流:基于Opencv+Python(附代码)

    ===================================================== github:https://github.com/MichaelBeechan CSDN: ...

  7. 计算机视觉与深度学习 | ORB特征匹配:基于OpenCV+Python(暴力匹配、FLANN)

    ===================================================== github:https://github.com/MichaelBeechan CSDN: ...

  8. 计算机视觉与深度学习 | ORB特征提取:基于OpenCV+Python(附代码)

    ===================================================== github:https://github.com/MichaelBeechan CSDN: ...

  9. 文本分割之水平投影法基于OpenCV(python)版实现

    对于如下一张图片,如何将文本区域分割成一行一行的了? 在文本分割领域中有一种很优秀的算法:投影法,包括水平投影法和垂直投影法.本文主要讲述水平投影法,水平投影法可以理解为一束光线从图像的左侧向右边进行 ...

最新文章

  1. 2022-2028年中国电力行业节能减排投资分析及前景预测报告
  2. Java线程池的工作原理与实现
  3. java 面向对象继承的思想_Java面向对象思想
  4. 微信小程序之视图容器(swiper)组件创建轮播图
  5. 图的知识点总结-数据结构
  6. win11文件夹怎么放到文件栏
  7. Effective C++ 读后感
  8. 第五章 Windows基础控件
  9. 标准C程序设计七---121
  10. Java 各种单例模式实现代码
  11. 如何用电子书来做网络营销
  12. Shawn Wildermuth的《Architecting WP7 》系列文章
  13. 店铺与品牌的关键字搜索——wand(wead and)算法简介与改造
  14. V_rep与vs2019开发环境配置
  15. 案场渠道稽核管理系统更新记录V1.2
  16. HCIA(华为体系初级网络安全工程师)eNSP(基础实验二RIP实验)
  17. HJ20 密码验证合格程序 Java
  18. 2021.8.12携程笔试第三题:建树游戏DFS
  19. 前端设计中关于外部js文件加载的速度优化
  20. 下一代社交产品的四个特性

热门文章

  1. 乐观处世,诚实做人,不骄不躁,积极进取; 勇于创新,踏实实现,谨慎规划,付诸实践; 事在人为...
  2. Mysql分区表为什么唯一键必须添加分区字段
  3. 静态代码块、构造代码块、构造函数、普通代码块的区别
  4. 【论文总结】Towards Open World Object Detection(附翻译)
  5. 【AlgorithmStar机器学习】AS机器学习库特征工程使用说明文档
  6. 网页无插件实时浏览海康和大华硬盘录像机视频技术解决方案
  7. idea注释设置和注释格式
  8. 国脚冯潇霆被广州恒大下放预备队
  9. 佳能Canon PIXMA MG4250 打印机驱动
  10. SwitchHosts安装使用