Harris关键点

说明参考博客
PCL关键点检测–Harris关键点

点云库pcl从入门到精通 官方给出代码,也就是下面的代码,不知道什么原因可以正常写入pcd,但是无法做到在一个视窗中,Harris关键点和点云同时显示,可以注释掉显示原始点云的代码,在视窗中只显示关键点,这样显示出来的关键点如下图所示:

在这里插入图片描述在没有注释掉原始点云的时候,出现的也是这个视窗,不清楚是为什么
而且终端中打印生成的关键点数量也是4000多个点,写入的Harris_keypoints.pcd文件显示的也是4000多个点。
在这里插入图片描述

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_cloud.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/io/io.h>
#include <pcl/keypoints/harris_3d.h>//harris
#include <cstdlib>
#include <vector>
#include <pcl/console/parse.h>

int main(int argc, char  *argv[])
{

    //读取pcd文件 作为输入点云
    pcl::PointCloud<pcl::PointXYZ>::Ptr input_cloud (new pcl::PointCloud<pcl::PointXYZ>);//声明读取的点云 作为输入点云
   
    std::string filename= "/home/ywj/study_PCL/pcl_tutorial/chapter8/3/room.pcd"; //pcd文件路径
    // 读取点云
    if(pcl::io::loadPCDFile(filename,*input_cloud)==-1)
    {
        //文件没有打开
        std::cout << "Was not able to open file:" <<filename<<std::endl ;
        return 0;
    }
    /*设置 harris 相关参数*/
    const float r_normal = 0.1 ;
	const float r_keypoint = 0.1 ;
    pcl::PointCloud<pcl::PointXYZI>::Ptr Harris_keypoints (new pcl::PointCloud<pcl::PointXYZI>);//声明 Harris 关键点 点云

    /* 声明Harris 关键点 检测 对象  */
    pcl::HarrisKeypoint3D<pcl::PointXYZ,pcl::PointXYZI,pcl::Normal>* harris_detector = new pcl::HarrisKeypoint3D<pcl::PointXYZ,pcl::PointXYZI,pcl::Normal> ;

    /*设置输入点云*/
    harris_detector->setInputCloud (input_cloud);
    /* 计算关键点 结果返回在 Harris_keypoints 中  */
    harris_detector->compute (*Harris_keypoints);
    //输出检测到harris 角点  的 个数
    std::cout<<"Harris_keypointsg 个数:"<<Harris_keypoints->size()<<std::endl;
    pcl::PCDWriter writer; //声明写pcd文件对象

    //将得到的角点 写入pcd 文件中
    writer.write<pcl::PointXYZI> ("Harris_keypoints.pcd",*Harris_keypoints,false);
    //可视化输入点云和关键点
    typedef pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZI> ColorHandlerT3;
    pcl::visualization::PCLVisualizer viewer("Harris keypoint");
    viewer.setBackgroundColor( 255, 255, 255 );//设置背景
        viewer.addPointCloud(input_cloud, "input_cloud");
    viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR,0,0,0,"input_cloud");
     viewer.addPointCloud (Harris_keypoints, ColorHandlerT3 (Harris_keypoints, 0.0, 0.0, 255.0),"Harris_keypoints");
    viewer.setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 8, "Harris_keypoints");

   
    viewer.spin ();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值