int main( int argc, char** argv ) { typedef DGtal::ImageContainerBySTLVector< DGtal::Z3i::Domain, unsigned char> Image3D; QApplication application(argc,argv); Viewer3D<> viewer; viewer.setWindowTitle("simpleViewer"); viewer.show(); trace.beginBlock("Testing Viewer with display of 3D Image "); Point p1( 0, 0, 0 ); Point p2( 125, 188, 0 ); Point p3( 30, 30, 30 ); std::string filename = testPath + "samples/lobsterCroped.vol"; viewer.setFillTransparency(150); Image3D image3d = VolReader<Image3D>::importVol(filename); viewer << SetMode3D(image3d.className(), "BoundingBox"); viewer << DGtal::AddTextureImage3DWithFunctor<Image3D, hueFct , Space, KSpace>(image3d, hueFct(),Viewer3D<>::RGBMode ); viewer.setFillTransparency(255); // Extract some slice images: // Get the 2D domain of the slice: DGtal::Projector<DGtal::Z2i::Space> invFunctor; invFunctor.initRemoveOneDim(2); DGtal::Z2i::Domain domain2D(invFunctor(image3d.domain().lowerBound()), invFunctor(image3d.domain().upperBound())); typedef DGtal::ConstImageAdapter<Image3D, DGtal::Z2i::Domain, DGtal::Projector< Z3i::Space>, Image3D::Value, DGtal::DefaultFunctor > SliceImageAdapter; DGtal::DefaultFunctor idV; DGtal::Projector<DGtal::Z3i::Space> aSliceFunctorZ(5); aSliceFunctorZ.initAddOneDim(2); SliceImageAdapter sliceImageZ(image3d, domain2D, aSliceFunctorZ, idV); viewer << sliceImageZ; viewer << DGtal::UpdateImagePosition<Space, KSpace>(6, Viewer3D<>::zDirection, 0.0, 0.0, -10.0); viewer << p1 << p2 << p3; viewer << Viewer3D<>::updateDisplay; bool res = application.exec(); trace.emphase() << ( res ? "Passed." : "Error." ) << endl; trace.endBlock(); return res ? 0 : 1; }