乐趣区

module ‘cv2.aruco’ has no attribute ‘drawMarker’ 怎么解决

在 OpenCV 中,cv2.aruco  模块确实没有名为  drawMarker  的函数。如果你尝试调用  cv2.aruco.drawMarker,你会遇到  AttributeError,因为该函数不存在。

正确的函数来绘制 Aruco 标记的是  cv2.aruco.drawMarker  的旧版本,即  cv2.aruco.drawMarker。然而,请注意,OpenCV 的某些版本可能已经弃用了这个旧版本的函数,并引入了新的 API。

在较新版本的 OpenCV 中,绘制 Aruco 标记的正确方式应该是使用 cv2.aruco.drawDetectorMarkers 函数。以下是一个例子:

import cv2  
import numpy as np  
  
# 加载 Aruco 字典  
aruco_dict = cv2.aruco.Dictionary_get(cv2.aruco.DICT_6X6_250)  
  
# 创建标记 ID 列表  
marker_ids = [22]  
  
# 创建空白的图像,其大小足够容纳标记  
marker_image = np.zeros((200, 200, 3), dtype=np.uint8)  
  
# 绘制标记  
(success, image) = cv2.aruco.drawDetectorMarkers(marker_image, marker_ids, aruco_dict)  
  
if success:  
    # 显示或保存图像  
    cv2.imshow('Marker', image)  
    cv2.waitKey(0)  
    cv2.destroyAllWindows()

在上面的代码中,drawDetectorMarkers  函数接受一个空白图像、一个包含标记 ID 的列表、Aruco 字典以及可选参数(如标记的大小和边距)。函数会返回一个布尔值表示是否成功绘制了标记,以及包含绘制标记的更新图像。

如果你正在使用的 OpenCV 版本仍然包含  drawMarker  函数,并且你想使用它,那么你需要确保你的 OpenCV 版本是较旧的,并且该函数尚未被弃用。然而,通常建议升级到最新版本的 OpenCV,并使用最新的 API,因为这样可以获得更好的性能、新功能和错误修复。

请确保你的 OpenCV 库是最新版本,或者至少是一个包含  drawDetectorMarkers  函数的版本。你可以通过运行  pip install --upgrade opencv-python  来更新你的 OpenCV 库。如果这不起作用,你可能需要手动安装一个特定版本的 OpenCV,或者从源代码编译它。

退出移动版