|
@@ -18,6 +18,55 @@ using google::protobuf::io::CodedInputStream;
|
|
using google::protobuf::io::ZeroCopyOutputStream;
|
|
using google::protobuf::io::ZeroCopyOutputStream;
|
|
using google::protobuf::io::CodedOutputStream;
|
|
using google::protobuf::io::CodedOutputStream;
|
|
using google::protobuf::Message;
|
|
using google::protobuf::Message;
|
|
|
|
+#include <sys/stat.h>
|
|
|
|
+#include <dirent.h>
|
|
|
|
+
|
|
|
|
+void init_glog()
|
|
|
|
+{
|
|
|
|
+ FLAGS_max_log_size = 100;
|
|
|
|
+ FLAGS_logbufsecs = 0;
|
|
|
|
+ google::InitGoogleLogging("LidarMeasurement");
|
|
|
|
+ google::SetStderrLogging(google::INFO);
|
|
|
|
+ google::InstallFailureSignalHandler();
|
|
|
|
+ FLAGS_colorlogtostderr = true; // Set log color
|
|
|
|
+ FLAGS_logbufsecs = 0; // Set log output speed(s)
|
|
|
|
+ FLAGS_max_log_size = 1024; // Set max log file size(GB)
|
|
|
|
+ FLAGS_stop_logging_if_full_disk = true;
|
|
|
|
+}
|
|
|
|
+void list_dir( const char * dir_name,std::vector<std::string>& files)
|
|
|
|
+{
|
|
|
|
+ if( 0 == dir_name )
|
|
|
|
+ {
|
|
|
|
+ std::cout<<" dir_name is null ! "<<std::endl;
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ struct stat s;
|
|
|
|
+ lstat( dir_name , &s );
|
|
|
|
+ if( ! S_ISDIR( s.st_mode ) )
|
|
|
|
+ {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ struct dirent * filename;
|
|
|
|
+ DIR * dir;
|
|
|
|
+ dir = opendir( dir_name );
|
|
|
|
+ if( NULL == dir )
|
|
|
|
+ {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ int iName=0;
|
|
|
|
+ while( ( filename = readdir(dir) ) != NULL )
|
|
|
|
+ {
|
|
|
|
+ if( strcmp( filename->d_name , "." ) == 0 ||
|
|
|
|
+ strcmp( filename->d_name , "..") == 0)
|
|
|
|
+ continue;
|
|
|
|
+
|
|
|
|
+ char wholePath[128] = {0};
|
|
|
|
+ sprintf(wholePath, "%s", filename->d_name);
|
|
|
|
+ files.push_back(wholePath);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
|
|
bool read_proto_param(std::string path, ::google::protobuf::Message& param)
|
|
bool read_proto_param(std::string path, ::google::protobuf::Message& param)
|
|
{
|
|
{
|
|
@@ -71,12 +120,12 @@ pcl::PointCloud<pcl::PointXYZ>::Ptr ReadTxtCloud(std::string file)
|
|
|
|
|
|
int main(int argc,char* argv[])
|
|
int main(int argc,char* argv[])
|
|
{
|
|
{
|
|
- std::string input_file="20191217-215217.txt";
|
|
|
|
|
|
+ init_glog();
|
|
|
|
+ std::string input_file="balck_suv";
|
|
std::string out_path="./test";
|
|
std::string out_path="./test";
|
|
if(argc>=2)
|
|
if(argc>=2)
|
|
{
|
|
{
|
|
input_file=argv[1];
|
|
input_file=argv[1];
|
|
- input_file+=".txt";
|
|
|
|
}
|
|
}
|
|
if(argc>=3)
|
|
if(argc>=3)
|
|
{
|
|
{
|
|
@@ -96,27 +145,48 @@ int main(int argc,char* argv[])
|
|
}
|
|
}
|
|
Locate_task* task=new Locate_task();
|
|
Locate_task* task=new Locate_task();
|
|
|
|
|
|
- std::string cloud_path="/home/zx/data/samples/src_txt/balck_suv/";
|
|
|
|
|
|
+ std::string cloud_path="/home/zx/data/samples/src_txt/";
|
|
cloud_path+=input_file;
|
|
cloud_path+=input_file;
|
|
- pcl::PointCloud<pcl::PointXYZ>::Ptr cloud;
|
|
|
|
|
|
+ std::vector<std::string> files;
|
|
|
|
+ list_dir(cloud_path.c_str(),files);
|
|
|
|
+ int count=files.size();
|
|
|
|
+ int correct_size=0;
|
|
|
|
+ for(int i=0;i<files.size();++i) {
|
|
|
|
|
|
- cloud=ReadTxtCloud(cloud_path);
|
|
|
|
- std::cout<<" input file: "<<cloud_path<<std::endl;
|
|
|
|
- code=task->set_locate_cloud(cloud);
|
|
|
|
- if(code!=SUCCESS)
|
|
|
|
- {
|
|
|
|
- LOG(ERROR)<<code.to_string();
|
|
|
|
- return 0;
|
|
|
|
- }
|
|
|
|
- task->set_save_path(out_path);
|
|
|
|
- code=locater->execute_task(task,5);
|
|
|
|
- if(code==SUCCESS)
|
|
|
|
- {
|
|
|
|
- LOG(INFO)<<" LOCATE SUCCESS";
|
|
|
|
|
|
+ pcl::PointCloud<pcl::PointXYZ>::Ptr cloud;
|
|
|
|
+ std::string t_file=cloud_path+"/"+files[i];
|
|
|
|
+ cloud = ReadTxtCloud(t_file);
|
|
|
|
+ std::cout << " input file: " << t_file << std::endl;
|
|
|
|
+ code = task->set_locate_cloud(cloud);
|
|
|
|
+ if (code != SUCCESS) {
|
|
|
|
+ LOG(ERROR) << code.to_string();
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+ task->set_save_path(out_path);
|
|
|
|
+ code = locater->execute_task(task, 5);
|
|
|
|
+ if (code == SUCCESS) {
|
|
|
|
+ LOG(INFO) << " LOCATE SUCCESS";
|
|
|
|
+ correct_size++;
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ LOG(ERROR) << code.to_string();
|
|
|
|
+ //移动文件
|
|
|
|
+ usleep(300);
|
|
|
|
+ std::string src="./test/cnn3d.txt";
|
|
|
|
+ std::string dst="./error/";
|
|
|
|
+ dst+=files[i];
|
|
|
|
+ std::string name="mv "+src+" "+dst;
|
|
|
|
+ const char *des_name=name.c_str();
|
|
|
|
+
|
|
|
|
+ system(des_name); //调用系统命令
|
|
|
|
+ usleep(200);
|
|
|
|
+
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- else
|
|
|
|
|
|
+ if(count>0)
|
|
{
|
|
{
|
|
- LOG(ERROR)<<code.to_string();
|
|
|
|
|
|
+ std::cout<<std::endl<<" acc : "<<correct_size<<"/"<<count<<
|
|
|
|
+ " percent:"<<float(correct_size)/float(count)<<std::endl;
|
|
}
|
|
}
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|