Hello, here is everything I try to do to create the depth map, but I get an error that I don’t know why, the image is not because I tried with several images, and I have it right in the directory.
#include <iostream>
#include "vtkActor.h"
#include <vtkNamedColors.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkSmartPointer.h>
#include "vtkLight.h"
#include "vtkCamera.h"
#include <vtkDepthImageToPointCloud.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkWindowToImageFilter.h>
#include <vtkAutoInit.h>
#include "vtkTexture.h"
#include <vtkImageViewer2.h>
#include <vtkPNGReader.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
int main(int argc, char* argv[])
{
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
vtkSmartPointer<vtkPNGReader> reader = vtkSmartPointer<vtkPNGReader>::New();
vtkSmartPointer<vtkCamera> camera = vtkSmartPointer<vtkCamera>::New();
vtkSmartPointer<vtkLight> light = vtkSmartPointer<vtkLight>::New();
vtkSmartPointer<vtkNamedColors> colorsFondo = vtkSmartPointer<vtkNamedColors>::New();
vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New();
vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
vtkSmartPointer<vtkInteractorStyleTrackballCamera> interactorStyle = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
vtkSmartPointer<vtkTexture> texture = vtkSmartPointer<vtkTexture>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
vtkSmartPointer<vtkRenderer> render = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkWindowToImageFilter> windowToImageFilter = vtkSmartPointer<vtkWindowToImageFilter>::New();
//vtkSmartPointer<vtkDepthImageToPointCloud> depthImageToPointCloud = vtkSmartPointer<vtkDepthImageToPointCloud>::New();
try
{
reader->SetFileName("foto.png");
reader->Update();
texture->SetInputConnection(reader->GetOutputPort());
texture->SetQualityToDefault();
texture->Update();
camera->SetPosition(0, 0, 500);
camera->SetFocalPoint(0, 0, 0);
light->SetPosition(0, 0, 500);
light->SetDiffuseColor(colors->GetColor3d("White").GetData());
light->SetSpecularColor(colors->GetColor3d("White").GetData());
light->SetIntensity(1.0);
actor->SetTexture(texture);
actor->SetCoordinateSystemToWorld();
windowToImageFilter->SetInput(renderWindow);
windowToImageFilter->SetInputBufferTypeToZBuffer();
windowToImageFilter->SetReadFrontBuffer(false);
windowToImageFilter->SetProgressShiftScale(-1.0, 0.02);
windowToImageFilter->Update();
/*
depthImageToPointCloud->SetOutputPointsPrecision(0);
depthImageToPointCloud->SetInputConnection(0, windowToImageFilter->GetOutputPort());
depthImageToPointCloud->SetCamera(camera);
depthImageToPointCloud->Update();
*/
render->AddActor(actor);
render->AddLight(light);
render->GetActiveCamera();
renderWindow->AddRenderer(render);
renderWindow->Render();
renderWindow->SetSize(800, 800);
renderWindow->SetWindowName("depth-map image");
interactor->SetInteractorStyle(interactorStyle);
interactor->SetRenderWindow(renderWindow);
interactor->Initialize();
interactor->Start();
}
catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
return EXIT_FAILURE;
}
catch (...) {
std::cerr << "Error desconocido." << std::endl;
return EXIT_FAILURE;
}
return 0;
}
ERROR: In vtkImageData.cxx, line 1548
vtkImageData (000002708AA701A0): GetScalarPointer: Pixel (0, 0, 0) not in memory.
Current extent= (0, -1, 0, -1, 0, 0)