Получить глубину от камеры для каждого пикселяC++

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

Сообщение Anonymous »

У меня есть сетчатая модель, и, используя VTK, отобрал ее из данного положения камеры (x, y, z). Я могу сохранить это на изображение RGB (640x480), но я также хочу сохранить карту глубины, где каждый пиксель хранит значение глубины от камеры. Проблема заключается в том, что Zbufer сохраняет только значения в диапазоне [0,1]. Вместо этого я пытаюсь создать изображение синтетического диапазона, где я храню глубину/расстояние каждого пикселя от камеры. Аналогично изображению, создаваемому Kinect, я пытаюсь создать один с определенной точки зрения модели сетки.

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

string mesh_filename = "mesh.ply";
vtkSmartPointer mesh_reader = read_mesh_ply(mesh_filename);

vtkSmartPointer mapper = vtkSmartPointer::New();
mapper->SetInputConnection(mesh_reader->GetOutputPort());

vtkSmartPointer actor = vtkSmartPointer::New();
actor->SetMapper(mapper);

vtkSmartPointer renderer =  vtkSmartPointer::New();
vtkSmartPointer renderWindow = vtkSmartPointer::New();
renderWindow->AddRenderer(renderer);
renderWindow->SetSize(640, 480);

vtkSmartPointer renderWindowInteractor = vtkSmartPointer::New();
renderWindowInteractor->SetRenderWindow(renderWindow);

//Add the actors to the scene
renderer->AddActor(actor);
renderer->SetBackground(1, 1, 1);
Создайте камеру и поместите ее где -нибудь

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

vtkSmartPointer camera = vtkSmartPointer::New();

renderer->SetActiveCamera(camera);
camera->SetPosition(0,0,650);
//Render and interact
renderWindow->Render();
получить результат из буфера z
double b = renderer->GetZ(320, 240);
< /code>
В этом примере это дает 0,999995. Поскольку значения находятся между [0,1], я не знаю, как это интерпретировать, так как вы видите, что я установил камеру на 650 единиц на оси Z, поэтому я предполагаю, что Z-расстояние в этом пикселе (который находится на объекте в рендерированном RGB) должно быть близко к 650.

Подробнее здесь: https://stackoverflow.com/questions/176 ... each-pixel
Ответить

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

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

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

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

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