16 #define _USE_MATH_DEFINES 20 #include <open3d/Open3D.h> 21 #include <visiontransfer/deviceenumeration.h> 22 #include <visiontransfer/imagetransfer.h> 23 #include <visiontransfer/imageset.h> 24 #include <visiontransfer/reconstruct3d.h> 32 #define snprintf _snprintf_s 37 int main(
int argc,
char** argv) {
41 <<
"Usage: " << argv[0] <<
" MODE" << std::endl
43 <<
"Available modes:" << std::endl
44 <<
"0: Display RGBD image" << std::endl
45 <<
"1: Display 3d pointcloud" << std::endl;
48 bool displayPointcloud = (bool)atoi(argv[1]);
53 if(devices.size() == 0) {
54 std::cout <<
"No devices discovered!" << std::endl;
65 open3d::geometry::AxisAlignedBoundingBox bbox(Eigen::Vector3d(-10, -10, 0),
66 Eigen::Vector3d(10, 10, 5));
67 std::shared_ptr<open3d::geometry::PointCloud> cloud(
new open3d::geometry::PointCloud);
68 std::shared_ptr<open3d::geometry::RGBDImage> rgbdImage(
new open3d::geometry::RGBDImage);
71 open3d::visualization::Visualizer vis;
72 vis.CreateVisualizerWindow(
"Nerian 3D viewer", 1280, 768);
73 vis.PrintVisualizerHelp();
74 vis.GetRenderOption().SetPointSize(2);
79 while(!imageTransfer.receiveImageSet(imageSet)) {
80 if(!vis.PollEvents()) {
85 if(displayPointcloud) {
87 (*cloud) = *recon3d.createOpen3DCloud(imageSet,
true)->Crop(bbox);
90 cloud->Transform(Eigen::Affine3d(Eigen::AngleAxis<double>(M_PI, Eigen::Vector3d(1.0, 0.0, 0.0))).matrix());
93 (*rgbdImage) = *recon3d.createOpen3DImageRGBD(imageSet);
97 if(!vis.HasGeometry()) {
98 if(displayPointcloud) {
99 vis.AddGeometry(cloud);
101 vis.AddGeometry(rgbdImage);
105 vis.UpdateGeometry();
106 if(!vis.PollEvents()) {
113 }
catch(
const std::exception& ex) {
114 std::cerr <<
"Exception occurred: " << ex.what() << std::endl;
Transforms a disparity map into a set of 3D points.
DeviceList discoverDevices()
Discovers new devices and returns the list of all devices that have been found.
Class for synchronous transfer of image sets.
A set of one to three images, but usually two (the left camera image and the disparity map)...
Allows for the discovery of devices in the network.