Рассчитать 2D-3D соответствия с помощью opencv

Я работаю над точечным соответствием 2d и 3D модели. Во-первых, я использую код ниже:

cv::Mat cameraMatrix(3, 3, cv::DataType<double>::type);

cv::setIdentity(cameraMatrix);

std::cout << "Initial cameraMatrix: " << cameraMatrix << std::endl;

cv::Mat distCoeffs(4, 1, cv::DataType<double>::type);
distCoeffs.at<double>(0) = 0;
distCoeffs.at<double>(1) = 0;
distCoeffs.at<double>(2) = 0;
distCoeffs.at<double>(3) = 0;

cv::Mat rvec(3, 1, cv::DataType<double>::type);
cv::Mat tvec(3, 1, cv::DataType<double>::type);

cv::solvePnP(objectPoints, imagePoints, cameraMatrix, distCoeffs, rvec, tvec);

std::cout << "rvec: " << rvec << std::endl;
std::cout << "tvec: " << tvec << std::endl;

std::vector<cv::Point2f> projectedPoints;
cv::projectPoints(objectPoints, rvec, tvec, cameraMatrix, distCoeffs, projectedPoints);

Я ожидаю, что позиции projectedPoints [i] равны позиции imagepoints [i]. Но когда я пишу их значения, они разные.

for (unsigned int i = 0; i < projectedPoints.size(); ++i)
{
std::cout << "Image point: " << imagePoints[i] << " Projected to " << projectedPoints[i] << std::endl;
}

введите описание изображения здесь

Почему эти значения разные?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]