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

Aruco MarkerDetector的detect方法是否自动对图像去畸变?

关于ArUco MarkerDetector.detect()的图像去畸变问题
  • 结论:不需要提前用cv::undistort()手动去畸变,直接传入原始图像即可
  • 原因:
    • MarkerDetector的detect()方法在传入相机矩阵和畸变系数参数时,内部会自动完成图像去畸变处理,用于标记的检测和位姿计算。
    • 如果提前手动对图像去畸变,再传入detect(),会导致重复去畸变,反而降低检测精度,甚至出现标记定位偏移的情况。
  • 验证建议:可以做对比测试——分别传入原始图像和手动去畸变后的图像,查看标记的检测结果和位姿数据,会发现手动去畸变后的结果误差明显更大。

正确使用示例:

// 假设已加载相机内参cameraMatrix和畸变系数distCoeffs
cv::Mat rawImage = cv::imread("marker_img.jpg");
aruco::MarkerDetector detector;
std::vector<aruco::Marker> detectedMarkers;

// 直接传入原始图像,detect内部自动处理去畸变
detector.detect(rawImage, detectedMarkers, cameraMatrix, distCoeffs, 0.1f); // 0.1f为标记实际长度(米)

内容的提问来源于stack exchange,提问作者Mohamed Adjel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:31:19