You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:05:13