Mech-Eye API 2.3.3
API reference documentation for Mech-Eye Industrial 3D Camera
Loading...
Searching...
No Matches
Frame3D.h
1/*******************************************************************************
2 * BSD 3-Clause License
3 *
4 * Copyright (c) 2016-2024, Mech-Mind Robotics
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright notice, this
11 * list of conditions and the following disclaimer.
12 *
13 * 2. Redistributions in binary form must reproduce the above copyright notice,
14 * this list of conditions and the following disclaimer in the documentation
15 * and/or other materials provided with the distribution.
16 *
17 * 3. Neither the name of the copyright holder nor the names of its
18 * contributors may be used to endorse or promote products derived from
19 * this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 *
32 * Info: https://www.mech-mind.com/
33 *
34 ******************************************************************************/
35
36#pragma once
37#include <memory>
38#include "api_global.h"
39#include "Array2D.h"
40#include "ErrorStatus.h"
41#include "CommonTypes.h"
42
43namespace mmind {
44
45namespace eye {
46
50struct PointZ
51{
52 float z{0};
53};
54
59{
60 float x{0};
61 float y{0};
62 float z{0};
63};
64
69{
70 float x{0};
71 float y{0};
72 float z{0};
73};
74
80{
81 PointXYZ point;
82 NormalVector normal;
83};
84
90
91enum struct FileFormat {
92 PLY,
93 PCD,
94 CSV,
95};
96
105class MMIND_API_EXPORT Frame3D
106{
107public:
112
117
121 Frame3D(const Frame3D& other) noexcept;
122
126 Frame3D& operator=(const Frame3D& other) noexcept;
127
132
136 bool isEmpty() const;
137
141 void clear();
142
150
160
170
184 double& yOffset) const;
185
203 bool isOrganized = false) const;
204
223 const std::string& fileName,
224 bool isOrganized = false) const;
225
244 const std::string& fileName, bool isOrganized = false);
245
266 FileFormat fileFormat, const std::string& fileName,
267 bool isOrganized = false);
268
269private:
270 friend class CameraImpl;
271 friend class Frame2DAnd3D;
272 friend class InternalInterfaces;
273
274 std::shared_ptr<class Frame3DImpl> _impl;
275 Frame3D(std::shared_ptr<Frame3DImpl>& frameImpl);
276};
277
278} // namespace eye
279
280} // namespace mmind
Represents a 2D container of data.
Definition Array2D.h:17
Represents the 2D and 3D capture results, which can be obtained by calling Camera::capture2DAnd3D....
Represents the 3D capture result, which can be obtained by calling Camera::capture3D....
Definition Frame3D.h:106
ErrorStatus saveUntexturedPointCloudWithNormals(FileFormat fileFormat, const std::string &fileName, bool isOrganized=false) const
Saves the untextured point cloud to a file of the input file format and filename. Each point contains...
DepthMap getOrthogonalDepthMap(double &xScale, double &yScale, double &xOffset, double &yOffset) const
Obtains the 3D data with the PointZ data format. The 3D data is projected under the orthographic proj...
~Frame3D()
Destructor.
void clear()
Clears the data in Frame3D and releases the associated resources.
Frame3D()
Constructor.
PointCloudWithNormals getUntexturedPointCloudWithNormals() const
Gets the organized 3D data map with a PointXYZWithNormals pixel data format. Each point in PointCloud...
bool isEmpty() const
Judges whether Frame3D is empty.
static ErrorStatus savePointCloudWithNormals(const PointCloudWithNormals &pointCloud, FileFormat fileFormat, const std::string &fileName, bool isOrganized=false)
Saves the untextured point cloud to a file of the input file format and filename. Each point contains...
Frame3D & operator=(const Frame3D &other) noexcept
Copy assignment.
Size imageSize() const
Gets the image size of Frame3D.
Frame3D(const Frame3D &other) noexcept
Copy constructor.
ErrorStatus saveUntexturedPointCloud(FileFormat fileFormat, const std::string &fileName, bool isOrganized=false) const
Saves the untextured point cloud to a file of the input file format and filename. Each point contains...
static ErrorStatus savePointCloud(const PointCloud &pointCloud, FileFormat fileFormat, const std::string &fileName, bool isOrganized=false)
Saves the untextured point cloud to a file of the input file format and filename. Each point contains...
DepthMap getDepthMap() const
Gets the organized 3D data with the PointZ data format. Each point in DepthMap contains the depth (z-...
PointCloud getUntexturedPointCloud() const
Gets the organized 3D data map with a PointXYZ pixel data format. Each point in PointCloud contains t...
Describes the types of errors.
Definition ErrorStatus.h:12
The pixel element struct with the normal vector coordinate (x, y, z) information.
Definition Frame3D.h:69
float y
Normal vector Y coordinate, invalid data: nan.
Definition Frame3D.h:71
float z
Normal vector Z coordinate, invalid data: nan.
Definition Frame3D.h:72
float x
Normal vector X coordinate, invalid data: nan.
Definition Frame3D.h:70
Represents a point in UntexturedPointCloud with the coordinate (x, y, z) information.
Definition Frame3D.h:59
float z
Z channel, unit: mm, invalid data: nan.
Definition Frame3D.h:62
float y
Y channel, unit: mm, invalid data: nan.
Definition Frame3D.h:61
float x
X channel, unit: mm, invalid data: nan.
Definition Frame3D.h:60
The pixel element struct in UntexturedPointCloudWithNormals with the coordinate (x,...
Definition Frame3D.h:80
Represents a point in DepthMap with the depth (z-coordinate) information.
Definition Frame3D.h:51
float z
Depth channel, unit: mm, invalid data: nan.
Definition Frame3D.h:52
Describes a two-dimensional size with a width and a height.
Definition CommonTypes.h:22