#include <opencv2/opencv.hpp>
int main() {
// 픽셀 좌표 (예: 객체를 탐지한 픽셀 좌표)
cv::Point2f pixelPoint(100, 150);
// 카메라 매트릭스 및 왜곡 계수 (카메라 캘리브레이션에서 얻은 값 사용)
cv::Mat cameraMatrix = (cv::Mat_<double>(3, 3) << fx, 0, cx, 0, fy, cy, 0, 0, 1);
cv::Mat distortionCoeffs = (cv::Mat_<double>(1, 5) << k1, k2, p1, p2, k3);
// 카메라 좌표를 월드 좌표로 변환하는 함수
cv::Matx44d transformationMatrix; // 여기에 변환 행렬이 저장됨
cv::solvePnP(objectPoints, imagePoints, cameraMatrix, distortionCoeffs, transformationMatrix);
// 픽셀 좌표를 카메라 좌표로 변환
cv::Matx31d pixelCoordinates(pixelPoint.x, pixelPoint.y, 1.0);
cv::Matx31d cameraCoordinates = cameraMatrix.inv() * pixelCoordinates;
// 카메라 좌표를 월드 좌표로 변환
cv::Matx41d worldCoordinatesHomogeneous = transformationMatrix * cv::Matx41d(cameraCoordinates(0), cameraCoordinates(1), cameraCoordinates(2), 1.0);
cv::Matx31d worldCoordinates(worldCoordinatesHomogeneous(0), worldCoordinatesHomogeneous(1), worldCoordinatesHomogeneous(2));
// 결과 출력
std::cout << "픽셀 좌표: " << pixelPoint << std::endl;
std::cout << "월드 좌표: " << worldCoordinates << std::endl;
return 0;
}
-chatgpt
'AI > 로봇 AI' 카테고리의 다른 글
| [최적화 이론] 뉴턴 메서드 (0) | 2024.02.08 |
|---|---|
| [최적화 이론] 경사하강법 (0) | 2024.02.08 |
| [최적화 이론] simplex method 코드 (0) | 2024.01.18 |
| 이미지 히스토그램 + 코사인 유사도 검사 (1) | 2023.11.02 |
| 강화학습 프레임워크 후보 (0) | 2023.06.03 |