O código-fonte aberto está localizado em: GitHub - Shelfcol/livox_camera_lidar_calibration_modified: melhorias no livox_camera_lidar_calibration
correr:
roslaunch camera_lidar_calibration cornerPcd.launch
1. Leia todos os arquivos da pasta
// 遍历path下面的所有文件,保存在filenames里面
void GetFileNames(string path,vector<string>& filenames)
{
DIR *pDir;
struct dirent* ptr;
if(!(pDir = opendir(path.c_str()))){
std::cerr<<path<<" open failed"<<std::endl;
return;
}
while((ptr = readdir(pDir))!=0) {
if (strcmp(ptr->d_name, ".") != 0 && strcmp(ptr->d_name, "..") != 0 && ptr->d_name[0]!='.')
filenames.push_back(path + "/" + ptr->d_name);
}
// for_each(filenames.begin(),filenames.end(),[&](auto a){
// printf("%s\n",a.c_str());
// });
sort(filenames.begin(),filenames.end());
closedir(pDir);
}
2. Use a função de retorno de chamada do visualizador de nuvem de pontos para obter os pontos de canto
Após executar o código, mantenha pressionada a tecla Shift e clique com o botão esquerdo do mouse para selecionar os pontos do laser na mesma ordem dos pontos dos cantos da foto. shift+Q encerra a operação pcd atual e prossegue para a próxima operação pcd.
Se você achar que os pontos selecionados estão errados no meio do caminho, se você selecionar mais de 4 pontos no visualizador, você entrará novamente na seleção de pontos do pcd atual.