# PointCloudData

PointCloudData 封装了3D空间信息，表示3D空间中点的集合。点云中的每个点都有其自身的位置（X、Y、Z坐标）。PointCloudData 用于表示 PointCloud 节点的输出，并可用于执行各种空间分析和重建任务。

Setter方法仅用于向 PointCloudData 消息提供元数据（将用于点云的录制和回放）。

## 使用说明

 * 有组织与过滤 — 当在 PointCloud 节点上使用 setOrganized(true) 时，getWidth() / getHeight() 匹配源深度帧的尺寸，并包含无效点（z ≤ 0）。当过滤时（默认），height 为 1，width
   等于有效点的数量。
 * 颜色数据 — 当 isColor() 为 true 时，使用 getPointsRGB() 获取位置和RGBA颜色。在 Python 中，这会返回一个元组 (points, colors)，其中 points 为 np.ndarray (N, 3)
   float32，colors 为 np.ndarray (N, 4) uint8。
 * 边界框 — getMinX/Y/Z() 和 getMaxX/Y/Z() 返回以配置长度单位表示的轴对齐边界。

## 参考

PointCloudData 的详细API提供了对3D点云数据生成、操作和检索的控制。

#### Python

### dai::PointCloudData

Kind: class

PointCloudData message. Carries point cloud data.

#### dai::PointCloudData::dependent_false

Kind: struct

#### int64_t sequenceNum

Kind: variable

#### Timestamp ts

Kind: variable

#### Timestamp tsDevice

Kind: variable

#### std::optional< Timestamp > tsSystem

Kind: variable

#### std::optional< ImgTransformation > transformation

Kind: variable

#### PointCloudData()

Kind: function

Construct PointCloudData message.

#### ~PointCloudData()

Kind: function

#### std::vector< Point3f > getPoints()

Kind: function

#### std::vector< Point3fRGBA > getPointsRGB()

Kind: function

#### void setPoints(const std::vector< Point3f > & points)

Kind: function

#### void setPointsRGB(const std::vector< Point3fRGBA > & points)

Kind: function

#### unsigned int getInstanceNum()

Kind: function

Retrieves instance number

#### unsigned int getWidth()

Kind: function

Retrieves the height in pixels - in case of a sparse point cloud, this represents the hight of the frame which was used to
generate the point cloud

#### unsigned int getHeight()

Kind: function

Retrieves the height in pixels - in case of a sparse point cloud, this represents the hight of the frame which was used to
generate the point cloud

#### float getMinX()

Kind: function

Retrieves minimal x coordinate in depth units (millimeter by default)

#### float getMinY()

Kind: function

Retrieves minimal y coordinate in depth units (millimeter by default)

#### float getMinZ()

Kind: function

Retrieves minimal z coordinate in depth units (millimeter by default)

#### float getMaxX()

Kind: function

Retrieves maximal x coordinate in depth units (millimeter by default)

#### float getMaxY()

Kind: function

Retrieves maximal y coordinate in depth units (millimeter by default)

#### float getMaxZ()

Kind: function

Retrieves maximal z coordinate in depth units (millimeter by default)

#### bool isSparse()

Kind: function

Retrieves whether point cloud is sparse

#### bool isOrganized()

Kind: function

Retrieves whether point cloud is organized (height > 1) Organized point clouds have width x height structure from the original
image Sparse point clouds have height == 1 and only contain valid points

#### bool isColor()

Kind: function

Retrieves whether point cloud is color

#### PointCloudData & setWidth(unsigned int width)

Kind: function

Specifies frame width parameters: width: frame width

#### PointCloudData & setHeight(unsigned int height)

Kind: function

Specifies frame height parameters: height: frame height

#### PointCloudData & setSize(unsigned int width, unsigned int height)

Kind: function

Specifies frame size parameters: height: frame height; width: frame width

#### PointCloudData & setSize(std::tuple< unsigned int, unsigned int > size)

Kind: function

Specifies frame size parameters: size: frame size

#### PointCloudData & setMinX(float val)

Kind: function

Specifies minimal x coordinate in depth units (millimeter by default) parameters: val: minimal x coordinate in depth units
(millimeter by default)

#### PointCloudData & setMinY(float val)

Kind: function

Specifies minimal y coordinate in depth units (millimeter by default) parameters: val: minimal y coordinate in depth units
(millimeter by default)

#### PointCloudData & setMinZ(float val)

Kind: function

Specifies minimal z coordinate in depth units (millimeter by default) parameters: val: minimal z coordinate in depth units
(millimeter by default)

#### PointCloudData & setMaxX(float val)

Kind: function

Specifies maximal x coordinate in depth units (millimeter by default) parameters: val: maximal x coordinate in depth units
(millimeter by default)

#### PointCloudData & setMaxY(float val)

Kind: function

Specifies maximal y coordinate in depth units (millimeter by default) parameters: val: maximal y coordinate in depth units
(millimeter by default)

#### PointCloudData & setMaxZ(float val)

Kind: function

Specifies maximal z coordinate in depth units (millimeter by default) parameters: val: maximal z coordinate in depth units
(millimeter by default)

#### PointCloudData & setSparse(bool val)

Kind: function

Specifies whether point cloud is sparse parameters: val: whether point cloud is sparse

#### PointCloudData & setColor(bool val)

Kind: function

Specifies whether point cloud is color parameters: val: whether point cloud is color

#### PointCloudData & setInstanceNum(unsigned int instanceNum)

Kind: function

Specifies instance number parameters: instanceNum: instance number

#### const ImgTransformation & getTransformation()

Kind: function

Retrieves image transformation data

#### PointCloudData transformTo(const ImgTransformation & target)

Kind: function

Returns a copy of this point cloud. Due to efficiency reasons, point cloud remapping is currently not implemented. Point clouds
should be generated from already aligned source messages instead of being transformed after the fact. Use ImageAlign on the source
inputs before creating the point cloud. parameters: target: Target image transformation.

#### PointCloudData & setTransformation(const ImgTransformation & transformation)

Kind: function

Specifies image transformation data parameters: transformation: transformation data

#### PointCloudData & updateBoundingBox()

Kind: function

Recomputes the bounding box (min/max X, Y, Z) from the current point data. All stored points are included regardless of their z
value. If the cloud is empty, all bounds are set to 0.

#### void getPclData()

Kind: function

#### void setPclData(T...)

Kind: function

#### void serialize(std::vector< std::uint8_t > & metadata, DatatypeEnum & datatype)

Kind: function

#### DatatypeEnum getDatatype()

Kind: function

Get the datatype of this specific message.

return: DatatypeEnum

#### DEPTHAI_SERIALIZE(PointCloudData, width, height, minx, miny, minz, maxx, maxy, maxz, instanceNum, color, transformation, ts,
tsDevice, tsSystem, sequenceNum)

Kind: function

#### int64_t getSequenceNum()

Kind: function

Retrieves image sequence number

#### std::chrono::time_point< std::chrono::steady_clock, std::chrono::steady_clock::duration > getTimestamp()

Kind: function

Retrieves timestamp related to dai::Clock::now()

#### std::chrono::time_point< std::chrono::steady_clock, std::chrono::steady_clock::duration > getTimestampDevice()

Kind: function

Retrieves timestamp directly captured from device's monotonic clock, not synchronized to host time. Used mostly for debugging

#### std::optional< std::chrono::time_point< std::chrono::system_clock, std::chrono::system_clock::duration > >
getTimestampSystem()

Kind: function

Retrieves timestamp directly captured from device's system clock, that can be synchronized using PTP

#### std::optional< ImgTransformation > getTransformation()

Kind: function

Returns the current transformation if set, else std::nullopt.

#### void setTransformation(const ImgTransformation & transformation)

Kind: function

Sets the current transformation.

#### C++

### dai::PointCloudData

Kind: class

PointCloudData message. Carries point cloud data.

#### dai::PointCloudData::dependent_false

Kind: struct

#### int64_t sequenceNum

Kind: variable

#### Timestamp ts

Kind: variable

#### Timestamp tsDevice

Kind: variable

#### std::optional< Timestamp > tsSystem

Kind: variable

#### std::optional< ImgTransformation > transformation

Kind: variable

#### PointCloudData()

Kind: function

Construct PointCloudData message.

#### ~PointCloudData()

Kind: function

#### std::vector< Point3f > getPoints()

Kind: function

#### std::vector< Point3fRGBA > getPointsRGB()

Kind: function

#### void setPoints(const std::vector< Point3f > & points)

Kind: function

#### void setPointsRGB(const std::vector< Point3fRGBA > & points)

Kind: function

#### unsigned int getInstanceNum()

Kind: function

Retrieves instance number

#### unsigned int getWidth()

Kind: function

Retrieves the height in pixels - in case of a sparse point cloud, this represents the hight of the frame which was used to
generate the point cloud

#### unsigned int getHeight()

Kind: function

Retrieves the height in pixels - in case of a sparse point cloud, this represents the hight of the frame which was used to
generate the point cloud

#### float getMinX()

Kind: function

Retrieves minimal x coordinate in depth units (millimeter by default)

#### float getMinY()

Kind: function

Retrieves minimal y coordinate in depth units (millimeter by default)

#### float getMinZ()

Kind: function

Retrieves minimal z coordinate in depth units (millimeter by default)

#### float getMaxX()

Kind: function

Retrieves maximal x coordinate in depth units (millimeter by default)

#### float getMaxY()

Kind: function

Retrieves maximal y coordinate in depth units (millimeter by default)

#### float getMaxZ()

Kind: function

Retrieves maximal z coordinate in depth units (millimeter by default)

#### bool isSparse()

Kind: function

Retrieves whether point cloud is sparse

#### bool isOrganized()

Kind: function

Retrieves whether point cloud is organized (height > 1) Organized point clouds have width x height structure from the original
image Sparse point clouds have height == 1 and only contain valid points

#### bool isColor()

Kind: function

Retrieves whether point cloud is color

#### PointCloudData & setWidth(unsigned int width)

Kind: function

Specifies frame width parameters: width: frame width

#### PointCloudData & setHeight(unsigned int height)

Kind: function

Specifies frame height parameters: height: frame height

#### PointCloudData & setSize(unsigned int width, unsigned int height)

Kind: function

Specifies frame size parameters: height: frame height; width: frame width

#### PointCloudData & setSize(std::tuple< unsigned int, unsigned int > size)

Kind: function

Specifies frame size parameters: size: frame size

#### PointCloudData & setMinX(float val)

Kind: function

Specifies minimal x coordinate in depth units (millimeter by default) parameters: val: minimal x coordinate in depth units
(millimeter by default)

#### PointCloudData & setMinY(float val)

Kind: function

Specifies minimal y coordinate in depth units (millimeter by default) parameters: val: minimal y coordinate in depth units
(millimeter by default)

#### PointCloudData & setMinZ(float val)

Kind: function

Specifies minimal z coordinate in depth units (millimeter by default) parameters: val: minimal z coordinate in depth units
(millimeter by default)

#### PointCloudData & setMaxX(float val)

Kind: function

Specifies maximal x coordinate in depth units (millimeter by default) parameters: val: maximal x coordinate in depth units
(millimeter by default)

#### PointCloudData & setMaxY(float val)

Kind: function

Specifies maximal y coordinate in depth units (millimeter by default) parameters: val: maximal y coordinate in depth units
(millimeter by default)

#### PointCloudData & setMaxZ(float val)

Kind: function

Specifies maximal z coordinate in depth units (millimeter by default) parameters: val: maximal z coordinate in depth units
(millimeter by default)

#### PointCloudData & setSparse(bool val)

Kind: function

Specifies whether point cloud is sparse parameters: val: whether point cloud is sparse

#### PointCloudData & setColor(bool val)

Kind: function

Specifies whether point cloud is color parameters: val: whether point cloud is color

#### PointCloudData & setInstanceNum(unsigned int instanceNum)

Kind: function

Specifies instance number parameters: instanceNum: instance number

#### const ImgTransformation & getTransformation()

Kind: function

Retrieves image transformation data

#### PointCloudData transformTo(const ImgTransformation & target)

Kind: function

Returns a copy of this point cloud. Due to efficiency reasons, point cloud remapping is currently not implemented. Point clouds
should be generated from already aligned source messages instead of being transformed after the fact. Use ImageAlign on the source
inputs before creating the point cloud. parameters: target: Target image transformation.

#### PointCloudData & setTransformation(const ImgTransformation & transformation)

Kind: function

Specifies image transformation data parameters: transformation: transformation data

#### PointCloudData & updateBoundingBox()

Kind: function

Recomputes the bounding box (min/max X, Y, Z) from the current point data. All stored points are included regardless of their z
value. If the cloud is empty, all bounds are set to 0.

#### void getPclData()

Kind: function

#### void setPclData(T...)

Kind: function

#### void serialize(std::vector< std::uint8_t > & metadata, DatatypeEnum & datatype)

Kind: function

#### DatatypeEnum getDatatype()

Kind: function

Get the datatype of this specific message.

return: DatatypeEnum

#### DEPTHAI_SERIALIZE(PointCloudData, width, height, minx, miny, minz, maxx, maxy, maxz, instanceNum, color, transformation, ts,
tsDevice, tsSystem, sequenceNum)

Kind: function

#### int64_t getSequenceNum()

Kind: function

Retrieves image sequence number

#### std::chrono::time_point< std::chrono::steady_clock, std::chrono::steady_clock::duration > getTimestamp()

Kind: function

Retrieves timestamp related to dai::Clock::now()

#### std::chrono::time_point< std::chrono::steady_clock, std::chrono::steady_clock::duration > getTimestampDevice()

Kind: function

Retrieves timestamp directly captured from device's monotonic clock, not synchronized to host time. Used mostly for debugging

#### std::optional< std::chrono::time_point< std::chrono::system_clock, std::chrono::system_clock::duration > >
getTimestampSystem()

Kind: function

Retrieves timestamp directly captured from device's system clock, that can be synchronized using PTP

#### std::optional< ImgTransformation > getTransformation()

Kind: function

Returns the current transformation if set, else std::nullopt.

#### void setTransformation(const ImgTransformation & transformation)

Kind: function

Sets the current transformation.

### 需要帮助？

请前往 [OAKChina 官网](https://www.oakchina.cn/) 获取技术支持或解答您的任何疑问。
