ArUco 相关(opencv)

主要的问题还是随着opencv的版本升级,对aruco模块的函数命名变化挺大的,因此需要正确调用opencv对应版本下的aruco相关函数,不然程序无法运行,会报各种异常

在线ArUco工具

https://chev.me/arucogen/

保存下来的是svg格式

环境

python 3.7.16

opencv 4.7.0

其实就只安装了两个包:

opencv_contrib_python-4.7.0.68-cp37-abi3-win_amd64.whl

opencv_python-4.7.0.72-cp37-abi3-win_amd64.whl

创建aruco标定图

markerImage = np.zeros((200, 200), dtype=np.uint8)
dictionary = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_6X6_250)
#生成内部为6*6,加外围一层黑边实际为8*8的图
cv2.aruco.generateImageMarker(dictionary, 0, 200, markerImage, 1)
#dictionary:定义的标定图
#0:第几张aruco标定图
#200:标定图尺寸
#markerImage:要绘制的标定图
#1:aruco标定图外围黑边的尺寸
cv2.imwrite("marker22.png", markerImage)

检测aruco标定图

 image = cv2.imread(r'ArUco\102_aruco.jpg')dictionary = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_6X6_250)arucoParams = cv2.aruco.DetectorParameters()corners, ids, rejected = cv2.aruco.detectMarkers(image, dictionary, parameters=arucoParams)cv2.aruco.drawDetectedMarkers(image, corners, ids, (0, 0, 255))cv2.imwrite("image11.jpg", image)

报错

让那些狗屎的错误和解答博客都见鬼去吧

报错一

网上最常见的、关于aruco的代码是下面这段,来自链接

python下使用aruco标记进进行三维姿势估计_python aruco-CSDN博客

我用知乎,大模型得到的代码都是下面这段,但是我试了opencv3.4、opencv4.3、opencv4.5、opencv4.7多个版本的opencv,都没能将这段代码调用起来,我看评论区还有说opencv3.1的,但是我写这篇博客的时候opencv3.1的python安装包已经被禁没法使用了,因此这段代码基本上可以说是一个非常流行的废代码,一点作用没有,只会耽误时间

 import cv2import numpy as npdictionary = cv2.aruco.Dictionary_get(cv2.aruco.DICT_6X6_250)markerImage = np.zeros((200, 200), dtype=np.uint8)markerImage = cv2.aruco.drawMarker(dictionary, 22, 200, markerImage, 1)cv2.imwrite("marker22.png", markerImage)
报错二
 AttributeError: module 'cv2.aruco' has no attribute 'Dictionary_get'

别听那些乱七八糟的博客鬼扯,这个函数已经被重命名了,直接舍

报错三
 AttributeError: module 'cv2.cv2' has no attribute 'aruco'

我在尝试opencv4.3时报的这个错误,别信网上那些卸了重按的,类似下面的博客

ModularNotFoundError: No module named “cv2.aruco“ 解决办法,亲测有效_modulenotfounderror: no module named 'cv2.aruco-CSDN博客

 pip install opencv-python

这个命名只会安装最新版本的opencv,他哪年哪月按的,你哪年哪月按呀,opencv版本怎么可能一样

参考链接

https://docs.opencv.org/4.9.0/d5/dae/tutorial_aruco_detection.html

Detection of ArUco Markers

还得是官方文档,虽然我只找到了C版本的代码

Augmented Reality using ArUco Markers in OpenCV (C++ / Python) | LearnOpenCV #

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/36062.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux常见操作问题

1、登录刚创建的用户,无法操作。 注:etc/passwd文件是Linux操作系统中存储用户账户信息的文本文件,包含了系统中所有用户的基本信息,比如用户名、用户ID、用户组ID、用户家目录路径。 注:etc: 这个目录存放所有的系统…

Android关机闹钟的实现原理以及基于高通的实现

最近新到了一家公司, 做手机的rom, 刚来被分配做改造DeckClock这个部分以便熟悉整个代码环境.里面包含闹钟, 世界时钟, 定时器, 秒表四块. 我们是基于OnePlus的rom的基础上进行修改. 当我看到产品说关机闹钟相关的东西的时候, 因为之前懂一些关于RTC的东西, 就说这个是要基于RT…

Java工具包——Lombok

目录 1. maven仓库手动导入依赖注解 1.1 maven仓库引入依赖 1.2 在类上使用Data注解 1.3 在属性上使用Getter与Setter注解 2. EditStarters插件注解 2.1 安装EditStarters插件 2.2 在pom.xml中进行操作 2.3 在java对象类中使用注解 3. lombok工具使用结果查看 3.1…

腾讯云CVM,CentOS8系统下部署Java-Web项目步骤详解

在CVM中部署项目首先要配置好JDK,Tomcat,Mysql(这里以Tomcat和Mysql为例)。部署JDK和Tomcat的步骤可以参考 CentOS7系统下部署tomcat,浏览器访问localhost:8080/_不积跬步,无以至千里;不积小流,无以成江河。-CSDN博客 我这里从Mysql的安装和设…

HDOJ5616 Jam‘s balance

目录 HDOJ5616 Jams balance题目描述背景输入输出 题解解法一解法二优化 打赏 HDOJ5616 Jam’s balance 题目描述 背景 有 N N N个已知质量的砝码,分别询问给出的 M M M个质量能否被称出 输入 第一行输入一个变量 T T T,表示有 T T T组数据&#xf…

数据预处理功能教程,上传文件生成知识库 | Chatopera

如何快速的生成高质量的知识库? 数据预处理功能教程 | Chatopera 云服务低代码定制聊天机器人 关于 Chatopera Chatopera 云服务重新定义聊天机器人,https://bot.chatopera.com 定制智能客服、知识库、AI 助手、智慧家居等智能应用,释放创新…

【java算法专场】双指针(上)

目录 前言 基本原理 对撞指针 快慢指针 移动零 算法思路 算法步骤 代码实现 算法分析 复写零 算法思路 算法步骤 代码实现 快乐数 算法思路 算法步骤 代码实现 盛最多水的容器 ​编辑算法思路 代码实现 前言 双指针是一种在数组或链表等线性数据结构中高效…

Unity使用Fmod的线程安全大坑!

对EventInstance设置回调函数时,回调函数内不能调用协程。否则会秒崩溃,并且不带任何报错! 协程在主线程中执行,但是事件回调是异步在音频线程中执行的 Event Callbacks 某些 EVENT_CALLBACK_TYPE 回调会在音频线程中执行,比如 …

Axure 教程 | 雅虎新闻焦点

主要内容 在雅虎首页,新闻焦点大图和焦点小图同步切换轮播,本课程我们来学习如何实现这个效果。 交互说明 1.页面载入后,切换当前屏幕显示的5张焦点图,小图标处以横线提示当前焦点图。 2.鼠标移入焦点大图,新闻标题显示…

水平拆分的技巧

水平拆分的原则和技巧 水平拆分是一种常见的数据库优化手段,它涉及到将一个大型表根据特定的字段值拆分成多个较小的表。这种做法可以有效地提高查询效率,尤其是在处理大量数据时。以下是一些关于如何根据业务设计字段进行水平拆分的建议: …

马斯克的SpaceX星舰有多牛?我们离殖民火星还有多远?

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 埃隆马斯克是一位知名的企业家和工程师,他掌握着多家公司,涉及多个领域,包括电动汽车、太空探索、太阳能、脑…

Charles 证书迁移/复制,实现手机安装一次证书可以连接多个设备的 charles 效果

如果你希望在一个手机上安装一次证书,但是使用这个手机可能在不同的时候去连接你自己安装了Charles的不同设备。比如你在公司有有一个电脑,你在家里也有一个电脑,甚至还有一个笔记本等。 如果想实现只给手机安装一次证书,就可以都…

告别数据线!轻松实现iOS和安卓设备间的文件共享

用 AirDroid 的附近传输功能,完全免费,几十个G的文件也可以相互传输。不限制iPhone和iPad数量,多个设备同时登录也不会强迫下线。 当你要在苹果手机和安卓手机之间传输文件,请将AirDroid安装到两台手机上,然后登录同一…

从零开始:STM32与W25Q64 Flash存储器的SPI接口全解析

摘要 本文将从基础出发,全面解析STM32微控制器与W25Q64 Flash存储器通过SPI接口的通信。内容包括SPI基础知识、W25Q64特性、硬件连接、SPI接口配置、读写操作及实际代码示例。 1. SPI通信基础 SPI是一种串行通信协议,主要特点包括: 同步通…

2008-2022年 上市公司-环境绩效数据(EP)

环境绩效(Environmental Performance,简称EP)是衡量组织在环境管理方面成效的重要指标,它体现了组织如何通过有效的环境管理体系来控制环境因素,实现环境方针和目标。以下是对上市公司环境绩效数据的详细介绍&#xff…

图的拓扑排序

图的拓扑排序(Topological Sorting)是一种线性排序,用于有向无环图(Directed Acyclic Graph,DAG)。拓扑排序将图中的顶点排成一个线性序列,使得对于每一条有向边 (u, v),顶点 u 都排…

安全继电器的使用和工作原理

安全继电器的使用和工作原理 安全继电器是一种用于保护人员和设备安全的电气装置,通常用于监控和控制危险或紧急情况下的电气系统。它的主要作用是在检测到故障或危险情况时迅速切断电路,以防止潜在的伤害或损坏。使用 安全继电器通常用于以下情况&…

[AI开发配环境]VSCode远程连接ssh服务器

文章目录 总览:ssh连接远程服务器连接免密登录:Docker:ssh连接远程宿主机后,进一步连接并使用其中的docker容器reload window 配置解释器:CtrlP,在上面输入“>python”, 然后选selecet interpreter运行命…

Ubuntu磁盘分区和挂载 虚拟机扩容 逻辑卷的创建和扩容保姆及教程

目录 1、VMware虚拟机Ubuntu20.04系统磁盘扩容 2、Linux的磁盘分区和挂载 3、创建逻辑卷和逻辑卷的扩容 1、VMware虚拟机Ubuntu20.04系统磁盘扩容 通过下图可以看出我们的根磁盘一共有20G的大小,现在我们把它扩容为30G 注:如果你的虚拟机有快照是无…

Python高级编程:自然语言处理基础

Python高级编程:自然语言处理基础 在前几篇文章中,我们探讨了Python的基础语法、面向对象编程、标准库、第三方库、并发编程、异步编程、网络编程与网络爬虫、数据库操作与ORM、数据分析与数据可视化、机器学习基础以及深度学习基础。在这篇文章中,我们将深入探讨Python在自…