当前位置: 首页> 文旅> 艺术 > ArUco 相关(opencv)

ArUco 相关(opencv)

时间:2025/8/10 1:52:26来源:https://blog.csdn.net/XDH19910113/article/details/139975451 浏览次数:0次

主要的问题还是随着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 #

关键字:ArUco 相关(opencv)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: