Skip to content

Image constructor does not take care of non-contiguous input #4792

@yxlao

Description

@yxlao

Checklist

Describe the issue

o3d.geometry.Image's constructor assumes contiguous input.

When the input is non-contiguous, there is no warning and the data can be invalid.

Steps to reproduce the bug

import open3d as o3d
import numpy as np

if __name__ == '__main__':
    np_image = np.array([[0, 1, 2],
                         [3, 4, 5]], dtype=np.uint8)
    np_image = np.flipud(np_image)
    o3_image = o3d.geometry.Image(np_image)

    print("numpy image:\n", np_image)
    print("open3d image:\n", np.asarray(o3_image))

Error message

numpy image:
 [[3 4 5]
 [0 1 2]]
open3d image:
 [[3 4 5]
 [0 0 0]]

Expected behavior

Expect the Open3D result to match numpy.

numpy image:
 [[3 4 5]
 [0 1 2]]
open3d image:
 [[3 4 5]
 [0 1 2]]

Open3D, Python and System information

- Operating system: Ubuntu 20.04
- Python version: Python 3.8
- Open3D version: 0.14.1
- System architecture: x86
- Is this a remote workstation?:  no
- How did you install Open3D?: pip
- Compiler version (if built from source): N/A

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions