PCL 1.11缺少文件/目录错误消息

时间:2020-07-24 18:19:06

标签: c++ opencv point-cloud-library

我正在尝试使用立体摄像机(校准和校正),视差图和点云库创建点云。下面是对我的C ++代码的简要说明,该代码应该使用视差图生成点云。

<div class="mainContainer">
  <div class="txtContainer">
    <p>Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions
      Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms
      and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions
      Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms
      and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions
      Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms
      and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions
      Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms
      and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions
      Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... Terms
      and Conditions Write Up... Terms and Conditions Write Up... Terms and Conditions Write Up... </p>
  </div>
  <div class="btnContainer">
    <button class="btn" disabled>Submit</button>
  </div>
</div>

我运行以下终端命令来编译此.cpp文件...

#include <iostream>
#include <fstream>
#include <string>
#include <opencv2/opencv.hpp>
#include <opencv2/ximgproc.hpp>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/cloud_viewer.h>
#include <boost/thread/thread.hpp>
#include <pcl/visualization/vtk.h>

using namespace std;
using namespace cv;
using namespace cv::ximgproc;
using namespace pcl;
using namespace pcl::visualization;

boost::shared_ptr<PCLVisualizer> rgbVis (PointCloud<PointXYZRGB>::ConstPtr cloud)
{
  boost::shared_ptr<PCLVisualizer> viewer (new PCLVisualizer ("3D Viewer"));
  viewer->setBackgroundColor (0, 0, 0);
  PointCloudColorHandlerRGBField<PointXYZRGB> rgb(cloud);
  viewer->addPointCloud<PointXYZRGB> (cloud, rgb, "sample cloud");
  viewer->setPointCloudRenderingProperties (PCL_VISUALIZER_POINT_SIZE, 3, "sample cloud");
  return (viewer);
}

/* Some other functions */

int main()
{
    .....
    .....
    int l, r;
    cout << "Enter CAM index for Left Camera ";
    cin >> l;
    cout << endl << "Enter CAM index for Right Camera ";
    cin >> r;
    VideoCapture leftCam(l);
    VideoCapture rightCam(r);
    ........
    ........
    boost::shared_ptr<PCLVisualizer> viewer;

    bool proceed = true;
    
    while(proceed)
    {
        ........
        ........
        PointCloud<PointXYZRGB>::Ptr pointCloud(new PointCloud<PointXYZRGB>());
        Mat xyz;
        reprojectImageTo3D(disparityMap, xyz, q);
        pointCloud->width = static_cast<uint32_t>(disparityMap.cols);
        pointCloud->height = static_cast<uint32_t>(disparityMap.rows);
        pointCloud->is_dense = false;
        PointXYZRGB tempPoint;
        for(int i = 0; i < disparityMap.rows; i++)
        {
            uchar* rgb_ptr = rightUndistorted.ptr<uchar>(i);
            uchar* disp_ptr = disparityMap.ptr<uchar>(i);
            double* xyz_ptr = xyz.ptr<double>(i);

            for(int j = 0; j < disparityMap.cols; j++)
            {
                uchar d = disp_ptr[j];
                if(d == 0)
                    continue;
                Point3f p = xyz.at<Point3f>(i, j);

                tempPoint.x = p.x;
                tempPoint.y = p.y;
                tempPoint.z = p.z;

                tempPoint.b = rgb_ptr[3 * j];
                tempPoint.g = rgb_ptr[3 * j + 1];
                tempPoint.r = rgb_ptr[3 * j + 2];
                pointCloud->points.push_back(tempPoint);
            }
        }

        viewer = rgbVis(pointCloud);
        if(waitKey(50) == 'q')
            proceed = false;
    }

    destroyAllWindows();
    return 0;
}

这会产生以下错误消息...

g++ -std=c++14 d2pc.cpp -o d2pc `pkg-config --cflags --libs opencv pcl_io-1.11 pcl_visualization-1.11` -lboost_system

我认为从here安装Vtk可能有助于解决此问题,但没有帮助。

如何解决此问题?我在Ubuntu 18.04中使用OpenCV 3.4.10

1 个答案:

答案 0 :(得分:0)

首先构建并安装vtk

构建

  • tar xf VTK-9.0.1.tar.gz
  • cd VTK-9.0.1
  • mkdir build && cd build
  • cmake ..
  • make -j

安装

(如果您的安装首选位置与~/.local不同,只需在下面更改insdir

  • insdir=$(echo ~/.local)
  • mkdir $insdir
  • cmake --install . --prefix $insdir

然后将包含路径(-I $insdir/include/vtk-9.0),库路径(-L $insdir/lib64或可能在32位计算机上为$insdir/lib)和vtk库(-llibname1 ... -llibnameX)添加到您的编译命令。

示例:

  • allvtklibs=$(ls $insdir/lib64/libvtk*.so | sed -E 's,^.*/lib(.*)\.so$,-l\1,')
  • g++ -std=c++14 d2pc.cpp -o d2pc -I $insdir/include/vtk-9.0 -L $insdir/lib64 $(pkg-config --cflags --libs opencv pcl_io-1.11 pcl_visualization-1.11) -Wl,-rpath=$insdir/lib64 $allvtklibs -lboost_system
相关问题