从pcl all-in-one中提取K近邻搜索代码并封装为dll

在头文件Knearsearch.h中

#ifndef KnearSearch_H_
#define KnearSearch_H_
#ifdef KnearSearch
#define KnearSearch extern "C" _declspec(dllimport) 
#else
#define KnearSearch extern "C" _declspec(dllexport) 
#endif // KnearSearch

KnearSearch void KNS(float* SP, float* cloud, int size, int k, int* indices, float* dist);
#endif
在源文件Knearsearch.cpp中

#include 
   
   
    
    
#include "KnearSearch.h"
using namespace std;

void KNS(float* SP, float* cloud, int size, int k, int* indices, float* dist)
{
	flann::Index
    
    
     
     
      
      > flannindex(flann::Matrix
      
      
       
       (cloud, size, 3), flann::KDTreeSingleIndexParams(15));
	flannindex.buildIndex();
	flann::Matrix
       
       
         indices_mat(indices, k, 1); flann::Matrix 
        
          dist_mat(dist, k, 1); vector 
         
           searchpoint(3, 3); flannindex.knnSearch(flann::Matrix 
          
            (SP, 1, 3), indices_mat, dist_mat, k, flann::SearchParams(-1, 0.0f)); } 
           
          
         
       
      
      
     
     
    
    
   
   
生成dll文件之后,建立一个测试的小程序

#include <KnearSearch.h>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
	float a[] = { 1, 4, 3, 1, 3, 3, 2, 2, 2 };
	float p[] = { 1, 1, 1 };
	int size = 3;
	int k = 1;
	int indice[1];
	float dist[1];
	KNS(p, a, size, k, indice, dist);
	cout << indice[0] << endl;
	cout << dist[0] << endl;
	return 0;
}

得到结果


成功大笑

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
dll函数接口: ////******** 初始化默认参数 ********// //extern "C" int __stdcall ZSY3DViewerInit(); //******** 读取历史数据到cloud ********// extern "C" int __stdcall ZSY3DReadHistoryData(char *file_dir); //******** 读取txt数据到cloud ********// extern "C" int __stdcall ZSY3DReadTxtData(char *file_dir); //******** 读取单个点数据到cloud ********// extern "C" int __stdcall ZSY3DReadSingleData(float x, float y, float z); //******** 读取所有点数据到cloud ********// extern "C" int __stdcall ZSY3DReadNowData(float *x, float *y, float *z, int count); //******** vtk读取txt文件并显示 ********// extern "C" int __stdcall ZSY3DReadFile_TXT(char *file_dir); //******** vtk读取obj文件并显示 ********// extern "C" int __stdcall ZSY3DReadFile_OBJ(char *file_dir); //******** vtk读取vtk文件并显示 ********// extern "C" int __stdcall ZSY3DReadFile_VTK(char *file_dir); //******** vtk读取ply文件并显示 ********// extern "C" int __stdcall ZSY3DReadFile_PLY(char *file_dir); //******** cloud下采样处理 ********// extern "C" int __stdcall ZSY3DDownSampling(float leaf_size); //******** cloud均匀采样处理 ********// extern "C" int __stdcall ZSY3DBalanceSampling(float radiusSearch = 0.01f); //******** cloud增采样处理 ********// extern "C" int __stdcall ZSY3DIncreaseSampling(float radius = 0.03f, float StepSize = 0.02f); //******** cloud直通滤波采样处理 ********// extern "C" int __stdcall ZSY3DStraightSampling(char *fieldName = "z", float limits_min = 0.0f, float limits_max = 0.1f, bool limitsNegative = true); //******** cloud统计滤波采样处理 ********// extern "C" int __stdcall ZSY3DStatisticsSampling(float meanK = 50.0f,float stddevMulThresh = 1.0f); //******** cloud半径滤波采样处理 ********// extern "C" int __stdcall ZSY3DRadiusSampling(float radiusSearch = 0.8f, float minNeighborsInRadius = 2.0f); //******** cloud数据进行渲染,并显示 ********// extern "C" int __stdcall ZSY3DShowPointCloud(); //******** cloud数据进行VTK三维重建(三角面绘制),并显示 ********// extern "C" int __stdcall ZSY3DDelaunayBuild(bool depth_color); //******** cloud数据进行VTK三维重建(曲面体绘制),并显示 ********// extern "C" int __stdcall ZSY3DSurfaceBu

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值