Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Python .e57 files reader/writer

Project description

pye57

PyPI PyPI - Python Version AppVeyor Travis

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

pip install pye57

If you're on Windows and using python 3.5 or 3.6, wheels are available.

Otherwise, see the building notes below.

Building notes

Windows

Binaries of xerces-c can be obtained from conda using: conda install xerces-c

Linux

Install libxerces-c-dev before installing.

Project details


Download files

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

Files for pye57, version 0.2.3
Filename, size File type Python version Upload date Hashes
Filename, size pye57-0.2.3-cp35-cp35m-win32.whl (256.5 kB) File type Wheel Python version cp35 Upload date Hashes View hashes
Filename, size pye57-0.2.3-cp35-cp35m-win_amd64.whl (330.1 kB) File type Wheel Python version cp35 Upload date Hashes View hashes
Filename, size pye57-0.2.3-cp36-cp36m-win32.whl (256.6 kB) File type Wheel Python version cp36 Upload date Hashes View hashes
Filename, size pye57-0.2.3-cp36-cp36m-win_amd64.whl (330.1 kB) File type Wheel Python version cp36 Upload date Hashes View hashes
Filename, size pye57-0.2.3.tar.gz (159.1 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page