兔子pcd文件下载:firc.lanzoux.com/iLfSgg749ab

# -*- 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()


输出:

[python][pcl]python-pcl案例之兔子显示_opencv