Example that shows how to acquire depth map and RGB images from a kinect device, and show the warped RGB frame
#include <iostream>
#include <visp3/core/vpConfig.h>
#ifdef VISP_HAVE_LIBFREENECT_AND_DEPENDENCIES
#if defined(VISP_HAVE_DISPLAY)
#include <visp3/core/vpImage.h>
#include <visp3/core/vpTime.h>
#include <visp3/gui/vpDisplayFactory.h>
#include <visp3/sensor/vpKinect.h>
int main()
{
#ifdef ENABLE_VISP_NAMESPACE
#endif
#if (VISP_CXX_STANDARD < VISP_CXX_STANDARD_11)
#endif
int exit_status = EXIT_SUCCESS;
try {
#ifdef VISP_HAVE_LIBFREENECT_OLD
Freenect::Freenect<vpKinect> freenect;
vpKinect &kinect = freenect.createDevice(0);
#else
Freenect::Freenect freenect;
#endif
if (0) {
float angle = -3;
kinect.setTiltDegrees(angle);
}
#if 1
#else
#endif
#if (VISP_CXX_STANDARD >= VISP_CXX_STANDARD_11)
#else
#endif
display->init(Idmap, 100, 200, "Depth map");
displayRgb->init(Irgb, 900, 200, "Color Image");
displayRgbWarped->init(Iwarped, 900, 700, "Warped Color Image");
std::cout << "Click in one image to stop acquisition" << std::endl;
}
std::cout << "Stop acquisition" << std::endl;
exit_status = EXIT_SUCCESS;
}
std::cout << "Catch an exception: " << e << std::endl;
exit_status = EXIT_FAILURE;
}
catch (...) {
std::cout << "Catch an exception " << std::endl;
exit_status = EXIT_FAILURE;
}
#if (VISP_CXX_STANDARD < VISP_CXX_STANDARD_11)
if (display != nullptr) {
delete display;
}
if (displayRgb != nullptr) {
delete displayRgb;
}
if (displayRgbWarped != nullptr) {
delete displayRgbWarped;
}
#endif
return exit_status;
}
#else
int main()
{
std::cout << "You do not have X11, or GDI (Graphical Device Interface), or GTK, or OpenCV functionalities to display "
"images..."
<< std::endl;
std::cout << "Tip if you are on a unix-like system:" << std::endl;
std::cout << "- Install X11, configure again ViSP using cmake and build again this example" << std::endl;
std::cout << "Tip if you are on a windows-like system:" << std::endl;
std::cout << "- Install GDI, configure again ViSP using cmake and build again this example" << std::endl;
return EXIT_SUCCESS;
}
#endif
#else
int main()
{
std::cout << "You do not have Freenect functionality enabled" << std::endl;
std::cout << "Tip if you are on a unix-like system:" << std::endl;
std::cout << "- Install libfreenect, configure again ViSP using cmake and build again this example" << std::endl;
return EXIT_SUCCESS;
}
#endif
Class that defines generic functionalities for display.
static bool getClick(const vpImage< unsigned char > &I, bool blocking=true)
static void display(const vpImage< unsigned char > &I)
static void flush(const vpImage< unsigned char > &I)
error that can be emitted by ViSP classes.
Driver for the Kinect-1 device.
void warpRGBFrame(const vpImage< vpRGBa > &Irgb, const vpImage< float > &Idepth, vpImage< vpRGBa > &IrgbWarped)
bool getDepthMap(vpImage< float > &map)
void start(vpKinect::vpDMResolution res=DMAP_LOW_RES)
bool getRGB(vpImage< vpRGBa > &IRGB)
std::shared_ptr< vpDisplay > createDisplay()
Return a smart pointer vpDisplay specialization if a GUI library is available or nullptr otherwise.
vpDisplay * allocateDisplay()
Return a newly allocated vpDisplay specialization if a GUI library is available or nullptr otherwise.