Skip to main content

Python .e57 files reader/writer

Project description

pye57

PyPI PyPI - Python Version GitHub

Python wrapper of LibE57Format to read and write .e57 point cloud files

Example usage

import numpy as np
import pye57

e57 = pye57.E57("e57_file.e57")

# read scan at index 0
data = e57.read_scan(0)

# 'data' is a dictionary with the point types as keys
assert isinstance(data["cartesianX"], np.ndarray)
assert isinstance(data["cartesianY"], np.ndarray)
assert isinstance(data["cartesianZ"], np.ndarray)

# other attributes can be read using:
data = e57.read_scan(0, intensity=True, colors=True, row_column=True)
assert isinstance(data["cartesianX"], np.ndarray)
assert isinstance(data["cartesianY"], np.ndarray)
assert isinstance(data["cartesianZ"], np.ndarray)
assert isinstance(data["intensity"], np.ndarray)
assert isinstance(data["colorRed"], np.ndarray)
assert isinstance(data["colorGreen"], np.ndarray)
assert isinstance(data["colorBlue"], np.ndarray)
assert isinstance(data["rowIndex"], np.ndarray)
assert isinstance(data["columnIndex"], np.ndarray)

# the 'read_scan' method filters points using the 'cartesianInvalidState' field
# if you want to get everything as raw, untransformed data, use:
data_raw = e57.read_scan_raw(0)

# writing is also possible, but only using raw data for now
e57_write = pye57.E57("e57_file_write.e57", mode='w')
e57_write.write_scan_raw(data_raw)
# you can specify a header to copy information from
e57_write.write_scan_raw(data_raw, scan_header=e57.get_header(0))

# the ScanHeader object wraps most of the scan information:
header = e57.get_header(0)
print(header.point_count)
print(header.rotation_matrix)
print(header.translation)

# all the header information can be printed using:
for line in header.pretty_print():
    print(line)

# the scan position can be accessed with:
position_scan_0 = e57.scan_position(0)

# the binding is very close to the E57Foundation API
# you can modify the nodes easily from python
imf = e57.image_file
root = imf.root()
data3d = root["data3D"]
scan_0 = data3d[0]
translation_x = scan_0["pose"]["translation"]["x"]

Installation

On linux, Windows or Apple Silicon:

python -m pip install pye57

On macOS with Intel CPU you can try to build from source (advanced users):

Building from source (for developers)

Cloning the repository with required submodule

Clone a new repository along with the libe57Format submodule

git clone https://github.com/davidcaron/pye57.git --recursive

If the repository has already been previously cloned, but without the --recursive flag

cd pye57 # go to the cloned repository
git submodule init # this will initialise the submodules in the repository
git submodule update # this will update the submodules in the repository

Dependencies on Linux

Install libxerces-c-dev first.

sudo apt install libxerces-c-dev

Dependencies on Windows

To get xerces-c, you can either build from source or if you're using conda:

conda install -y xerces-c

Dependencies on MacOS

To get xerces-c, run:

bash ./scripts/install_xerces_c.sh

Run pip install from the repo source

cd pye57
python -m pip install .

Uninstalling

Use pip again

python -m pip uninstall pye57

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pye57-0.4.15.tar.gz (473.1 kB view hashes)

Uploaded Source

Built Distributions

pye57-0.4.15-cp313-cp313-win_amd64.whl (1.1 MB view hashes)

Uploaded CPython 3.13 Windows x86-64

pye57-0.4.15-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.5 MB view hashes)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

pye57-0.4.15-cp313-cp313-macosx_11_0_arm64.whl (2.6 MB view hashes)

Uploaded CPython 3.13 macOS 11.0+ ARM64

pye57-0.4.15-cp312-cp312-win_amd64.whl (1.1 MB view hashes)

Uploaded CPython 3.12 Windows x86-64

pye57-0.4.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.5 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pye57-0.4.15-cp312-cp312-macosx_11_0_arm64.whl (2.6 MB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

pye57-0.4.15-cp311-cp311-win_amd64.whl (1.1 MB view hashes)

Uploaded CPython 3.11 Windows x86-64

pye57-0.4.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.5 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pye57-0.4.15-cp311-cp311-macosx_11_0_arm64.whl (2.6 MB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

pye57-0.4.15-cp310-cp310-win_amd64.whl (1.1 MB view hashes)

Uploaded CPython 3.10 Windows x86-64

pye57-0.4.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.5 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pye57-0.4.15-cp310-cp310-macosx_11_0_arm64.whl (2.6 MB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

pye57-0.4.15-cp39-cp39-win_amd64.whl (1.1 MB view hashes)

Uploaded CPython 3.9 Windows x86-64

pye57-0.4.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.5 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pye57-0.4.15-cp39-cp39-macosx_11_0_arm64.whl (2.6 MB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

pye57-0.4.15-cp38-cp38-win_amd64.whl (1.1 MB view hashes)

Uploaded CPython 3.8 Windows x86-64

pye57-0.4.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.5 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

pye57-0.4.15-cp38-cp38-macosx_11_0_arm64.whl (2.6 MB view hashes)

Uploaded CPython 3.8 macOS 11.0+ ARM64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page