[pcl][Original] python-pcl installation and configuration support windows and ubuntu perfect process version 2021

Throughout the entire network, there are various problems with the pcl python version configuration, and there is basically no article that can be completely solved. To this day, I spent several months intermittently and finally got through the whole process, and realized the installation and testing of two systems, windows and ubuntu, first, the result chart

The successful environment for windows test is:

windows 10

VS2019 Professional Edition

PCL1.11.1

Anaconda3

python=3.6 or python3.7

Installation process:

The first step: install VS2019 and PCL1.11.1, we will omit it due to the simple installation process

Step 2: Install Anaconda3, we only need anaconda3 environment

Step 3: Open our software (note that it must be run as an administrator)

Select the anaconda3 installation directory and PCL installation directory, click start configuration, wait about 4 minutes, then all configuration tasks can be completed automatically.

Test: We open the anaconda3 environment and switch to the pcl virtual environment

conda activate pcl

Then let's test it by reading the code of pcd, note that this code is the code provided by the official website

# -*- coding: utf-8 -*-
# Point cloud library
import pcl
import pcl.pcl_visualization

# Opencv
# import opencv
import cv2


def main():
    # These are track bar initial settings adjusted to the given pointcloud to make it completely visible.
    # Need to be adjusted depending on the pointcloud and its xyz limits if used with new pointclouds.
    # int a = 22;
    # int b = 12;
    # int c=  10;
    a = 22
    b = 12
    c = 10

    # PCL Visualizer to view the pointcloud
    # pcl::visualization::PCLVisualizer viewer ("Simple visualizing window");
    viewer = pcl.pcl_visualization.PCLVisualizering()

    # int main (int argc, char** argv)
    # {
    #   pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGBA>);
    #   pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud_filtered (new pcl::PointCloud<pcl::PointXYZRGBA>);
    #   if (pcl::io::loadPLYFile<pcl::PointXYZRGBA> (argv[1], *cloud) == -1) //* load the ply file from command line
    #   {
    #       PCL_ERROR ("Couldn't load the file\n");
    #       return (-1);
    #   }
    cloud = pcl.load("rabbit.pcd")
    #cloud = pcl.load("Tile_173078_LD_010_017_L22.obj")

    # pcl::copyPointCloud( *cloud,*cloud_filtered);
    # cloud_filtered = cloud.copyPointCloud()
    cloud_filtered = cloud

    # float i
    # float j
    # float k

    # cv::namedWindow("picture");
    # // Creating trackbars uisng opencv to control the pcl filter limits
    # cvCreateTrackbar("X_limit", "picture", &a, 30, NULL);
    # cvCreateTrackbar("Y_limit", "picture", &b, 30, NULL);
    # cvCreateTrackbar("Z_limit", "picture", &c, 30, NULL);
    # cv2.CreateTrackbar("X_limit", "picture", a, 30)
    # cv2.CreateTrackbar("Y_limit", "picture", b, 30)
    # cv2.CreateTrackbar("Z_limit", "picture", c, 30)

    # // Starting the while loop where we continually filter with limits using trackbars and display pointcloud
    # char last_c = 0;
    last_c = 0

    # while(true && (last_c != 27))
    while last_c != 27:

        # pcl::copyPointCloud(*cloud_filtered, *cloud);
        # // i,j,k Need to be adjusted depending on the pointcloud and its xyz limits if used with new pointclouds.
        i = 0.1 * a
        j = 0.1 * b
        k = 0.1 * c

        # Printing to ensure that the passthrough filter values are changing if we move trackbars.
        # cout << "i = " << i << " j = " << j << " k = " << k << endl;
        print("i = " + str(i) + " j = " + str(j) + " k = " + str(k))

        # Applying passthrough filters with XYZ limits
        # pcl::PassThrough<pcl::PointXYZRGBA> pass;
        # pass.setInputCloud (cloud);
        # pass.setFilterFieldName ("y");
        # //  pass.setFilterLimits (-0.1, 0.1);
        # pass.setFilterLimits (-k, k);
        # pass.filter (*cloud);
        pass_th = cloud.make_passthrough_filter()
        pass_th.set_filter_field_name("y")
        pass_th.set_filter_limits(-k, k)
        cloud = pass_th.filter()

        # pass.setInputCloud (cloud);
        # pass.setFilterFieldName ("x");
        # // pass.setFilterLimits (-0.1, 0.1);
        # pass.setFilterLimits (-j, j);
        # pass.filter (*cloud);
        # pass_th.setInputCloud(cloud)
        pass_th.set_filter_field_name("x")
        pass_th.set_filter_limits(-j, j)
        cloud = pass_th.filter()

        # pass.setInputCloud (cloud);
        # pass.setFilterFieldName ("z");
        # //  pass.setFilterLimits (-10, 10);
        # pass.setFilterLimits (-i, i);
        # pass.filter (*cloud);
        # pass_th.setInputCloud(cloud)
        pass_th.set_filter_field_name("z")
        pass_th.set_filter_limits(-10, 10)
        cloud = pass_th.filter()

        # // Visualizing pointcloud
        # viewer.addPointCloud (cloud, "scene_cloud");
        # viewer.spinOnce();
        # viewer.removePointCloud("scene_cloud");
        viewer.AddPointCloud(cloud, b'scene_cloud', 0)
        viewer.SpinOnce()
        # viewer.Spin()
        viewer.RemovePointCloud(b'scene_cloud', 0)


if __name__ == "__main__":
    # import cProfile
    # cProfile.run('main()', sort='time')
    main() The
above code we save test.py

Execute python test.py to display the result normally, which is the picture above.

In addition, we tried ubuntu18.04 to install python-pcl to achieve the same effect as above.

Guess you like

Origin blog.csdn.net/FL1623863129/article/details/113801255