macOS下OpenCV ArUco检测报错:detectMarkers参数无效
解决OpenCV 4.7.0 ArUco标记检测的参数错误问题
错误原因是OpenCV 4.x版本后ArUco模块的API发生了变化:ArucoDetector类在初始化时已经接收了标记字典和检测参数,调用其detectMarkers方法时,不需要再重复传入这些参数,且该方法不支持parameters关键字参数。
修改后的代码
import cv2 import cv2.aruco as aruco marker_dict = aruco.getPredefinedDictionary(aruco.DICT_4X4_50) parameters = cv2.aruco.DetectorParameters() # 将检测器初始化移到循环外,避免重复创建 detector = cv2.aruco.ArucoDetector(marker_dict, parameters) cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() if not ret: break gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 仅传入灰度帧即可,无需重复传字典和参数 marker_corners, marker_IDs, reject = detector.detectMarkers(gray_frame) print(marker_IDs) cv2.imshow("frame", frame) key = cv2.waitKey(1) if key == ord("g"): break cap.release() cv2.destroyAllWindows()
关键修改点
- 移除
detectMarkers调用中的marker_dict和parameters=parameters参数,因为这些配置已经在ArucoDetector初始化时完成 - 将
detector的初始化移到循环外部,避免每次循环都重新创建检测器,提升程序运行效率
内容的提问来源于stack exchange,提问作者Abhishek Soni
相关产品推荐
相关产品推荐

