Comment convertir les données au format pts collectées par lidar au format pcd


avant-propos

En raison des besoins du projet de travail, une grande quantité de données au format pts a été téléchargée du client et le fichier .pcd disponible doit être transféré.Ce qui suit est l'introduction et la solution ;

1. Quelles données contient .pts ?

Il existe de nombreux formats pour enregistrer les nuages ​​de points 3D lidar ; parmi eux, .pts est le moyen le plus rapide d'enregistrer les nuages ​​de points, de stocker directement les nuages ​​de points dans l'ordre XYZ et peut être enregistré en tant qu'entier ou virgule flottante ; peut être enregistré en code ASCII ou binaire, et chaque paramètre est directement séparé par un espace ; comme le montre la figure suivante :
insérez la description de l'image ici

2. Que sont les données .pcd ?

Le format PCD est un tout nouveau format de nuage de points, veuillez vous référer à l'adresse suivante pour des explications spécifiques ;

Adresse de réimpression : http://www.pclcn.org/study/shownews.php?lang=cn&id=54

3. Étapes de conversion

1. Format de données PCD

Le fichier .pcd ne peut pas seulement être ouvert par l'outil PCL, le suivant est ouvert par des éditeurs tels que VSCODE ou gedit ;

En comparant les pts, on constate que le fichier .pcd est composé des 4 premiers paramètres d'une ligne de données .pts + le fichier d'en-tête ;

# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z intensity
SIZE 4 4 4 4
TYPE F F F F
COUNT 1 1 1 1
WIDTH 35067435
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 35067435
DATA ascii
0 0 0 4
-1.32 -2.761 0.084 23
2.916 -2.93 0.147 26
2.317 -0.563 0.098 21
-0.081 -7.745 0.073 24
3.239 -4.546 0.117 12
-1.094 -3.617 0.109 6
......

2. Transformer les données

Après avoir pris connaissance du processus ci-dessus, nous utilisons Python pour effectuer une conversion et une exportation circulaires. Après tout, il y a 3 506 7435 nuages ​​de points ; le
contenu du script est le suivant :

### pts_pcd
f = open("DATA.pts")
o = open('DATA_out.txt', 'w')
line = f.readline()
line = f.readline()
while line:
    w = line.split(" ", 6)
    print(w[0] + " " + w[1] + " " + w[2] + " " + w[3])
    o.write(w[0] + " " + w[1] + " " + w[2] + " " + w[3] + "\r\n")
    line = f.readline()

f.close()
o.close()

Attendez que les données soient actualisées et vous pouvez voir qu'un fichier DATA_out.txt est généré dans le même répertoire ;

3. Chargez le fichier d'en-tête

Le contenu du fichier d'en-tête est le suivant, notez que les paramètres WIDTH et POINTS doivent correspondre aux paramètres pts ;

# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z intensity
SIZE 4 4 4 4
TYPE F F F F
COUNT 1 1 1 1
WIDTH 35067435
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 35067435
DATA ascii

Copiez le fichier d'en-tête directement dans DATA_out.txt ou utilisez la commande suivante pour copier directement de head.txt dans DATA.txt ;

sed -ne '1 r head.txt' -e '1N;P' -i DATA_out.txt 

4. Afficher PCD

Remplacez le suffixe de DATA_out.txt par .pcd ; ouvrez le fichier .pcd avec pcl_viewer
$ pcl_viewer DATA_out.pcd

insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/m0_54792870/article/details/112970845
conseillé
Classement