OpenCV 4.8.1中cv2.aruco无drawMarker()函数的报错问题
解决OpenCV 4.8.1中cv2.aruco.drawMarker()不存在的问题
OpenCV 4.8.1版本的aruco模块中,cv2.aruco.drawMarker()已被移除,取而代之的是generateImageMarker()函数,这就是触发AttributeError: module 'cv2.aruco' has no attribute 'drawMarker'错误的原因。
从OpenCV 4.7系列版本开始,aruco模块对API做了命名优化,生成单个ArUco标记的函数从drawMarker更名为generateImageMarker,两者参数和功能完全一致,只是命名更贴合“生成图像”的实际作用。
将代码中的cv2.aruco.drawMarker替换为cv2.aruco.generateImageMarker即可正常运行,修改后的完整代码如下:
import cv2 import numpy as np import matplotlib.pyplot as plt # 创建ArUco标记的预定义字典 dictionary = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_6X6_250) # 生成ArUco标记图像 marker_id = 23 marker_size = 200 marker_image = cv2.aruco.generateImageMarker(dictionary, marker_id, marker_size) # 用matplotlib显示标记 plt.imshow(marker_image, cmap='gray') plt.axis('off') plt.show()
你执行print(dir(cv2.aruco))得到的列表中已包含generateImageMarker,替换后即可成功生成并显示ArUco标记。
内容的提问来源于stack exchange,提问作者Mckinley Douberman
相关产品推荐
相关产品推荐

