diff --git a/modules/3d/src/pointcloud/load_point_cloud.cpp b/modules/3d/src/pointcloud/load_point_cloud.cpp index c9e3b13929..898b78ca86 100644 --- a/modules/3d/src/pointcloud/load_point_cloud.cpp +++ b/modules/3d/src/pointcloud/load_point_cloud.cpp @@ -188,8 +188,7 @@ void loadMesh(const String &filename, OutputArray vertices, OutputArrayOfArrays } else { - indices.create(1, (int)vec_indices.size(), CV_32SC3); - std::vector& vec = *(std::vector*)indices.getObj(); + std::vector vec(vec_indices.size()); for (int i = 0; i < vecsz; ++i) { Vec3i tri; @@ -207,6 +206,8 @@ void loadMesh(const String &filename, OutputArray vertices, OutputArrayOfArrays } vec[i] = tri; } + indices.create(1, (int)vec_indices.size(), CV_32SC3); + Mat(1, static_cast(vec_indices.size()), CV_32SC3, vec.data()).copyTo(indices); } }