Tôi có tọa độ thế giới 3D của một đối tượng và tôi muốn lấy tọa độ của nó trong mặt phẳng camera-2D. Tôi đã hiệu chuẩn máy ảnh bằng cách sử dụng cv::calibrateCamera
, để tôi có ma trận máy ảnh và biến dạngCoeffs.Tọa độ 3D của dự án OpenCV với tọa độ máy ảnh 2d
Để chiếu tọa độ 3D đến tọa độ 2 máy ảnh, tôi sử dụng cv::projectPoints
. Documentation nói:
trống projectPoints (InputArray objectPoints, InputArray rvec, InputArray tvec, InputArray cameraMatrix, InputArray distCoeffs, OutputArray imagePoints, OutputArray Jacobian = noArray (), double aspectRatio = 0)
Làm cách nào để nhận được rvec/tvec và phương pháp tiếp cận của tôi có đúng không?calibrateCamera
mang lại cho tôi rvecs
và tvecs
, nhưng chúng dành cho mỗi đầu vào bàn cờ-hình ảnh và tôi đoán, chúng là vòng xoay và bản dịch của bàn cờ chứ không phải của máy ảnh.
Vâng, chúng mô tả xoay và dịch của máy ảnh tương ứng với bàn cờ. Nếu bạn biết việc xoay và dịch của bàn cờ liên quan đến hệ thống tọa độ thế giới của bạn, bạn có thể dễ dàng tính toán extrinsics của máy ảnh của bạn trong hệ tọa độ thế giới. – sietschie
Nhưng tại sao tôi cần ma trận dịch/xoay này? Nó chỉ hoạt động với ma trận máy ảnh (= chiếu?)? – black
Ma trận máy ảnh chỉ chứa các tham số [nội tại] (https://en.wikipedia.org/wiki/Camera_resectioning#Intrinsic_parameters) như độ dài tiêu cự chứ không phải [bên ngoài] (https://en.wikipedia.org/wiki/ Các tham số Camera_resectioning # Extrinsic_parameters) là các tham số xoay và dịch của máy ảnh. – sietschie