pcd-rs
allows you to parse PCD point cloud data from a file or a binary buffer
Add pcd-rs to your Cargo.toml
.
toml
pcd_rs = "*"
Checkout docs.rs to see detailed usage.
```rust use failure::Fallible; use pcdrs::{prelude::*, seqreader::SeqReaderBuilder, PCDRecordRead};
pub struct Point { pub x: f32, pub y: f32, pub z: f32, pub rgb: f32, }
fn main() -> Fallible<()> {
let reader = SeqReaderBuilder::
```rust use failure::Fallible; use pcdrs::{ prelude::*, record::{Field, UntypedRecord}, seqreader::SeqReaderBuilder, };
fn main() -> Fallible<()> {
let reader = SeqReaderBuilder::
for point in points.iter() {
for field in point.0.iter() {
match field {
Field::I8(values) => {
println!("i8 values: {:?}", values);
}
Field::U8(values) => {
println!("u8 values: {:?}", values);
}
Field::F32(values) => {
println!("f32 values: {:?}", values);
}
_ => {
println!("other kinds of values");
}
}
}
}
Ok(())
} ```
```rust use failure::Fallible; use pcdrs::{meta::DataKind, prelude::*, seqwriter::SeqWriterBuilder, PCDRecordWrite};
pub struct Point { x: f32, y: f32, z: f32, }
fn main() -> Fallible<()> {
let viewpoint = Default::default();
let kind = DataKind::ASCII;
let mut writer = SeqWriterBuilder::
let point = Point {
x: 3.14159,
y: 2.71828,
z: -5.0,
};
writer.push(&point)?;
Ok(())
} ```
```rust use failure::Fallible; use pcdrs::{ meta::{DataKind, ValueKind}, prelude::*, record::{Field, UntypedRecord}, seqwriter::SeqWriterBuilder, };
fn main() -> Fallible<()> {
let viewpoint = Default::default();
let kind = DataKind::ASCII;
let schema = vec![
("x", ValueKind::F32, 1),
("y", ValueKind::F32, 1),
("z", ValueKind::F32, 1),
];
let mut writer = SeqWriterBuilder::
let point = UntypedRecord(vec![
Field::F32(vec![3.14159]),
Field::F32(vec![2.71828]),
Field::F32(vec![-5.0]),
]);
writer.push(&point)?;
Ok(())
} ```