Найдите местоположение камеры с помощьюsolvePnPC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Найдите местоположение камеры с помощьюsolvePnP

Сообщение Anonymous »

В рамках проекта, над которым я работаю, мне нужно найти местоположение камеры с помощьюsolvePnP.
Цель этого проекта — найти положение камеры с помощьюsolvePnP и сравнить его с реальной камерой. положение (как мы его храним).
Проект (OpenGL) заключается в следующем:
  • Создание трехмерного мира (с использованием треугольников), представляющий собой карту высот некоторой фотографии.
  • Путешествуйте по этому миру.
  • В определенной сцене по вашему выбору выберите 6 3D-точки и рассчитайте соответствующие им 2D-точки.
  • Вычислите, где находилась камера, когда вы выбрали эти точки.
  • Сравните положение камеры изsolvePnP и истинное положение камеры.
ПРИМЕЧАНИЯ:
  • Существует только 1 вид OpenGL, разделены на две части, так что левая сторона – это общий вид, а правая – вид с камеры.
  • Мы используем выбор цвета, чтобы сопоставить треугольники (центральную точку) и уникальный идентификатор (цвет).
  • Наш выбор цвета работает отлично.
  • Мы изо всех сил пытаемся найти местоположение камеры с помощьюsolvePnP. (Этап 4)
Соответствующий код:
  • Выбор 6 точек в сцена:
`
double xpos, ypos;
glfwGetCursorPos(window, &xpos, &ypos);

Код: Выделить всё

    int framebufferWidth, framebufferHeight;
glfwGetFramebufferSize(window, &framebufferWidth, &framebufferHeight);

int windowWidth, windowHeight;
glfwGetWindowSize(window, &windowWidth, &windowHeight);

int pixelX = static_cast(xpos * framebufferWidth / windowWidth);
int pixelY = framebufferHeight - static_cast(ypos * framebufferHeight / windowHeight) - 1;

// Only process picking if the click is on the right half of the screen
if (pixelX >= framebufferWidth / 2)
{
// Adjust pixelX to be relative to the right viewport
pixelX -= framebufferWidth / 2;
//find the color of the pixel, and retrieve the ID.
//with this ID, find the matching triangle
//if found :
imagePoints.push_back(glm::vec2(pixelX, pixelY));
objectPoints.push_back(point);
}
`
  • Пытаемся вычислить с помощьюsolvePnP:
`
void ComputeCameraPose(GLFWwindow* window)
{
if (imagePoints.size() < 4 || objectPoints.size() < 4) {
std::cout

Подробнее здесь: https://stackoverflow.com/questions/787 ... g-solvepnp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»