Git Product home page Git Product logo

Comments (11)

ch-sa avatar ch-sa commented on August 18, 2024 5

Ciao @AlexPasqua and @francescofact,

after quite some debugging I rooted the problem in the loading of the *.pcd file via Open3D. As you probably noticed the points are located in a grid and this is cause the floats seem to be ignored (rounded) on loading:

Loading point cloud from pointclouds/pointcloud_116.pcd using Open3DHandler.
First point cloud points:
0. [-0. 11. 0.]

  1. [-0. 8. 0.]
  2. [0. 7. 0.]
  3. [-0. 8. 0.]
  4. [-0. 7. 0.]

(In reality the first point is located at -0.20108423 11.055668 0.56653374!)

So what I did was converting your *.pcd point cloud into a *.ply file:

import open3d as o3d
pcd = o3d.io.read_point_cloud("pointclouds/pointcloud_116.pcd")
o3d.io.write_point_cloud("pointclouds/pointcloud_116.ply", pcd)

... and this could be loaded and displayed correctly inside labelCloud:
labelCloud_with_ply

Loading point cloud from pointclouds/pointcloud_116.pcd using Open3DHandler.
First point cloud points:
0. [-0. 11. 0.]

  1. [-0. 8. 0.]
  2. [0. 7. 0.]
  3. [-0. 8. 0.]
  4. [-0. 7. 0.]
    ============================================= Loading pointcloud_116.pcd =============================================
    Successfully loaded point cloud from pointclouds/pointcloud_116.pcd!
    Number of Points: 78011
    Number of Colors: None
    Point Cloud Center: [-2.76 0.35 0.35]
    Point Cloud Minimums: [-96. -18. 0.]
    Point Cloud Maximums: [ 57. 195. 25.]
    Initial Translation: [ 2.76 -0.35 -263.79]
    ======================================================================================================================
    There is currently no active bounding box to manipulate.
    There is currently no active bounding box to manipulate.
    Alignmode was changed to False!
    Imported 0 labels from labels/pointcloud_116.json.
    Loaded 0 bboxes!
    There is currently no active bounding box to manipulate.
    Intialized widget.
    Resized widget.
    Showing GUI...
    File labels/pointcloud_116.json already exists, replacing file ...
    Exported 0 labels to labels/pointcloud_116.json in CentroidFormat formatting!
    Loading next point cloud...
    Loading point cloud from pointclouds/pointcloud_116.ply using Open3DHandler.
    First point cloud points:
  5. [-0.20108423 11.055668 0.56653374]
  6. [-0.14641869 8.0501413 0.27004918]
  7. [0.42134565 7.7175632 0.21332707]
  8. [-0.76665801 8.4111414 0.18340768]
  9. [-0.14466441 7.9536901 0.12580046]
    ============================================= Loading pointcloud_116.ply =============================================
    Successfully loaded point cloud from pointclouds/pointcloud_116.ply!
    Number of Points: 78011
    Number of Colors: None
    Point Cloud Center: [-3.03 0.33 0.35]
    Point Cloud Minimums: [-96.05 -18.34 -0.34]
    Point Cloud Maximums: [ 57.49 195.42 25.65]
    Initial Translation: [ 3.03 -0.33 -264.82]

I would say this is a bug of Open3D but when running in interactive Python the same code as in labelCloud it suddenly works:

>>> import open3d as o3d
>>> o3d.__version__
'0.15.2'
>>> pcd = o3d.io.read_point_cloud("pointclouds/pointcloud_116.pcd")
>>> pcd.points[0]
array([-0.20108423, 11.055668  ,  0.56653374])

You can bypass this problem in shorthand by converting your point clouds into a different file format (like shown above). I will look into the issue with *.pcd files but am a bit clueless atm. due the same code producing different results depending if is used inside labelCloud or ipython.

from labelcloud.

francescofact avatar francescofact commented on August 18, 2024 1

Hello @ch-sa
On Windows the point cloud is rendered correctly, while on three different linux machines the same point cloud is rendered as sparse points.

Correct Render on Windows:
image

Sparse Render on Linux:
image

from labelcloud.

ch-sa avatar ch-sa commented on August 18, 2024 1

FYI: @francescofact , @AlexPasqua

This issue seems only to happen after initializing a QApplication:

import sys

from PyQt5.QtWidgets import QApplication

import open3d as o3d

QApplication(sys.argv)

pcd = o3d.io.read_point_cloud("pointcloud_116.pcd")
print(f"First point: {pcd.points[0]}")  # prints "First point: [-0. 11.  0.]"

I opened a bug ticket in Open3D for this:
isl-org/Open3D#4969

You can follow the progress there and until then maybe use a different format.

from labelcloud.

ch-sa avatar ch-sa commented on August 18, 2024

Hi @AlexPasqua,

so how did you get the point cloud in the second picture to load correctly?

Which format are you using and can you provide an example point cloud?

Best,
@ch-sa

from labelcloud.

AlexPasqua avatar AlexPasqua commented on August 18, 2024

Thanks for the reply @ch-sa ,

so how did you get the point cloud in the second picture to load correctly?

I didn't manage to load the point cloud correctly, but a colleague of mine did, and I took that screenshot while on a video call with him.
Our setups seem identical, same Ubuntu version (20.04.3 LTS), same python version (3.8.10), same versions of the packages in requirements.txt etc.

Which format are you using and can you provide an example point cloud?

My point clouds are in .pcd format.
HERE I provide the point cloud depicted in the screenshots in my first comment.

Hope to receive some news soon,
Best

from labelcloud.

ch-sa avatar ch-sa commented on August 18, 2024

I loaded your point cloud and it looks like this:
grafik

Is that what you expected? I checked the file and it is a colorless point cloud with 78011 points, which were all loaded by labelCloud:

========================== Loading pointcloud_116.pcd ==========================
Generating colors for colorless point cloud!
Number of Points: 78.011
Point Cloud Center: [-2.76 0.35 0.35]
Point Cloud Minimums: [-96. -18. 0.]
Point Cloud Maximums: [ 57. 195. 25.]
Initial Translation: [ 2.76 -0.35 -263.79]
Successfully loaded point cloud from pointclouds/pointcloud_116.pcd!
================================================================================

If this is what you expected and it is not working like that on your system, it looks like a setup issue. Then please provide the following to help debugging:

  1. Output of pip list or conda list
  2. config.ini from your project folder
  3. .labelCloud.log or copy the content of your terminal when trying to load the point cloud

from labelcloud.

AlexPasqua avatar AlexPasqua commented on August 18, 2024

Is that what you expected?

It's difficult to tell from that point of view, try to load this label (in KITTI format) and zoom to one of the bounding boxes, it the boxes are empty, than it's my same problem. There should be points (specifically in the shape of a cone) within the boxes.

Also, I tried to use a tool called Supervisely, and here the same pointcloud is loaded correctly

Then please provide the following to help debugging:

  1. Output of pip list or conda list
  2. config.ini from your project folder
  3. .labelCloud.log or copy the content of your terminal when trying to load the point cloud
  1. Output of pip list:
Package                 Version
----------------------- --------------------
addict                  2.4.0
anyio                   3.5.0
apturl                  0.5.2
argon2-cffi             21.3.0
argon2-cffi-bindings    21.2.0
asttokens               2.0.5
attrs                   21.4.0
Babel                   2.9.1
backcall                0.2.0
beautifulsoup4          4.10.0
bleach                  4.1.0
blinker                 1.4
Brlapi                  0.7.0
certifi                 2019.11.28
cffi                    1.15.0
chardet                 3.0.4
cheroot                 8.6.0
CherryPy                18.6.1
Click                   7.0
colorama                0.4.3
command-not-found       0.3
cryptography            2.8
cupshelpers             1.0
cycler                  0.11.0
dbus-python             1.2.16
debugpy                 1.5.1
decorator               5.1.1
defer                   1.0.6
defusedxml              0.7.1
deprecation             2.1.0
distro                  1.4.0
distro-info             0.23ubuntu1
entrypoints             0.3
executing               0.8.3
fonttools               4.30.0
httplib2                0.14.0
idna                    2.8
importlib-resources     5.4.0
ipykernel               6.9.2
ipython                 8.1.1
ipython-genutils        0.2.0
ipywidgets              7.7.0
jaraco.classes          3.2.1
jaraco.collections      3.5.1
jaraco.context          4.1.1
jaraco.functools        3.5.0
jaraco.text             3.7.0
jedi                    0.18.1
Jinja2                  3.0.3
joblib                  1.1.0
json5                   0.9.6
jsonschema              4.4.0
jupyter-client          7.1.2
jupyter-core            4.9.2
jupyter-packaging       0.11.1
jupyter-server          1.15.6
jupyterlab              3.3.2
jupyterlab-pygments     0.1.2
jupyterlab-server       2.11.2
jupyterlab-widgets      1.1.0
keyring                 18.0.1
kiwisolver              1.4.0
language-selector       0.1
launchpadlib            1.10.13
lazr.restfulclient      0.14.2
lazr.uri                1.0.3
louis                   3.12.0
macaroonbakery          1.3.1
MarkupSafe              2.1.1
matplotlib              3.5.1
matplotlib-inline       0.1.3
mistune                 0.8.4
more-itertools          8.12.0
nbclassic               0.3.7
nbclient                0.5.13
nbconvert               6.4.4
nbformat                5.2.0
nest-asyncio            1.5.4
netifaces               0.10.4
notebook                6.4.10
notebook-shim           0.1.0
numpy                   1.21.5
oauthlib                3.1.0
olefile                 0.46
open3d                  0.14.1
packaging               21.3
pandas                  1.4.1
pandocfilters           1.5.0
parso                   0.8.3
pexpect                 4.6.0
pickleshare             0.7.5
Pillow                  9.0.1
pip                     22.0.4
portend                 3.1.0
prometheus-client       0.13.1
prompt-toolkit          3.0.28
protobuf                3.6.1
psutil                  5.9.0
ptyprocess              0.7.0
pure-eval               0.2.2
pycairo                 1.16.2
pycparser               2.21
pycups                  1.9.73
Pygments                2.11.2
PyGObject               3.36.0
PyJWT                   1.7.1
pymacaroons             0.13.0
PyNaCl                  1.3.0
PyOpenGL                3.1.6
pyparsing               3.0.7
PyQt5                   5.14.2
PyQt5-Qt5               5.15.2
PyQt5-sip               12.9.1
pyRFC3339               1.1
pyrsistent              0.18.1
python-apt              2.0.0+ubuntu0.20.4.5
python-dateutil         2.8.2
python-debian           0.1.36ubuntu1
pytz                    2021.3
pyxdg                   0.26
PyYAML                  6.0
pyzmq                   22.3.0
reportlab               3.5.34
requests                2.22.0
requests-unixsocket     0.2.0
scikit-learn            1.0.2
scipy                   1.8.0
screen-resolution-extra 0.0.0
SecretStorage           2.3.1
Send2Trash              1.8.0
setuptools              60.10.0
simplejson              3.16.0
six                     1.14.0
sniffio                 1.2.0
soupsieve               2.3.1
stack-data              0.2.0
systemd-python          234
tempora                 5.0.1
terminado               0.13.3
testpath                0.6.0
threadpoolctl           3.1.0
tomlkit                 0.10.0
tornado                 6.1
tqdm                    4.63.0
traitlets               5.1.1
ubuntu-advantage-tools  27.2
ubuntu-drivers-common   0.0.0
ufw                     0.36
unattended-upgrades     0.1
urllib3                 1.25.8
wadllib                 1.3.3
wcwidth                 0.2.5
webencodings            0.5.1
websocket-client        1.3.1
wheel                   0.37.1
widgetsnbextension      3.6.0
xkit                    0.0.0
zc.lockfile             2.0
zipp                    3.7.0
  1. The file config.ini from my lableCloud folder: download here

  2. The file .lableCloud.log from my labelCloud folder: download here

from labelcloud.

AlexPasqua avatar AlexPasqua commented on August 18, 2024

@ch-sa
As my colleague @francescofact made me notice, on Windows it works, but only after removing the version of PyQt5 from requirements.txt

from labelcloud.

ch-sa avatar ch-sa commented on August 18, 2024

Hey @AlexPasqua,

so is the same point cloud looking differently on windows than my screenshot posted above?

(There were some issues with PyQt5 gut Windows, which is why I previously limited the PyQt versions to am older version. But this seems to have been fixed, so I dropped this limitation in the newest release of labelCloud.)

from labelcloud.

ch-sa avatar ch-sa commented on August 18, 2024

Hey @francescofact,

thanks for the screenshots. That's really odd. Seems like an issue with OpenGl, cause there is no difference in the logic between the operating systems.

Will try to have a look on it tomorrow.

from labelcloud.

AlexPasqua avatar AlexPasqua commented on August 18, 2024

Thanks for the support @ch-sa 😃

from labelcloud.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.