在 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,或者从源代码编译它。