跳转至

QuickCaptureX2

双目模式图像采集基础流程。

#include <RVC/RVC.h>

#include <iostream>

#include "IO/FileIO.h"
#include "IO/SavePointMap.h"

int main(int argc, char *argv[]) {
    // Initialize RVC X system.
    RVC::SystemInit();

    // Find Device
    RVC::Device device;

    // Method 1,Find device by index.
    {

        RVC::Device devices[10];
        size_t actual_size = 0;
        SystemListDevices(devices, 10, &actual_size, RVC::SystemListDeviceType::All);
        if (actual_size == 0) {
            std::cout << "Can not find any Camera!" << std::endl;
            return -1;
        }
        device = devices[0];
    }

    // Method 2,Find device by sn
    // This is the most recommended method when you have multiple cameras.
    {
        //device = RVC::SystemFindDevice("12345678");
    }

    RVC::DeviceInfo info;
    device.GetDeviceInfo(&info);

    if(info.support_x2 == false)
    {
        std::cout << "The camera does not support the x2 function!" << std::endl;
        RVC::SystemShutdown();
        return -1;
    }

    // Create and Open
    RVC::X2 x2 = RVC::X2::Create(device);
    x2.Open();
    if (!x2.IsOpen()) {
        std::cout << "RVC X Camera is not opened!" << std::endl;
        RVC::X2::Destroy(x2);
        RVC::SystemShutdown();
        return -1;
    }

    // Capture
    // Capture using the internal parameters of the camera.
    // We suggest that you adjust the parameters in RVC Manager first.
    bool ret = x2.Capture();
    if(ret == false)
    {
        std::cout << RVC::GetLastErrorMessage() << std::endl;
        x2.Close();
        RVC::X2::Destroy(x2);
        RVC::SystemShutdown();
        return -1;
    }

    // Data Process
    std::string dir = "./Data/";
    MakeDirectories(dir);
    dir += info.sn;
    MakeDirectories(dir);
    dir += "/x2";
    MakeDirectories(dir);

    RVC::PointMap pointcloud = x2.GetPointMap();
    RVC::Image image = x2.GetImage(RVC::CameraID_Left);
    pointcloud.Save((dir + "/pointcloud.ply").c_str(), RVC::PointMapUnit::Millimeter, true);
    pointcloud.Save((dir + "/pointcloud_color.ply").c_str(),RVC::PointMapUnit::Millimeter,true,image);
    image.SaveImage((dir + "/image.png").c_str());


    // Close RVC X Camera.
    x2.Close();
    RVC::X2::Destroy(x2);
    RVC::SystemShutdown();

    return 0;
}