机器视觉实战:OpenCV 目标检测与位姿估计

机器视觉与感知实战

机器人要“看懂”世界:先检测到目标在哪,再算出它离自己多远、以什么姿态摆放。

一、相机标定

针孔模型的畸变会让坐标失准。用棋盘格拍十几张图,算内参矩阵与畸变系数,是后续一切测量精度的前提:

import cv2
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None)

二、目标检测

传统方法(颜色阈值 + 轮廓)适合单一场景,深度学习检测器(YOLO 系)更通用:

# ultralytics 示例
from ultralytics import YOLO
model = YOLO('yolov8n.pt')
results = model('scene.jpg')
for box in results[0].boxes:
    print(box.cls.item(), box.xyxy.tolist())  # 类别与包围框

三、从 2D 到 3D

拿到像素坐标后,结合深度相机(RGB-D)或标定的外参,就能换算成相机坐标系下的三维点。多视角或激光点云则可以进一步做位姿估计与抓取规划。

四、工程心得

视觉链路 80% 的坑在数据与光照:固定相机曝光、控制环境光、留足标注质量预算。先在一个可控场景里跑通闭环,再谈通用。