元数据

    南宫NG·28


      南宫NG·28

      元数据

      帧元数据是提供在帧的生成期间存在的传感器配置和/或系统状态的快照的一组参数 (或属性)。在每帧的基础上重新计算和更新属性。Orbbec SDK支持查询一组预定义属性,作为最终用户可用的帧数据的一部分。

      API

      在其API中引入了两个函数来查询元数据:

      C:

      /**
       * @brief check if the frame contains the specified metadata
       *
       * @param[in] frame frame object
       * @param[in] type metadata type, refer to @ref ob_frame_metadata_type
       * @param[out] error Log error messages
       */
      bool ob_frame_has_metadata(ob_frame *frame, ob_frame_metadata_type type, ob_error **error);

      /**
       * @brief Get the metadata value of the frame
       *
       * @param[in] frame frame object
       * @param[in] type  metadata type, refer to @ref ob_frame_metadata_type
       * @param[out] error Log error messages
       * @return int64_t return the metadata value of the frame
       */
      int64_t ob_frame_get_metadata_value(ob_frame *frame, ob_frame_metadata_type type, ob_error **error);

      C++:

      // Member functions of class ob::Frame

      /**
      * @brief Check if the frame object has metadata of a given type.
      *
      * @param type The metadata type. refer to @ref OBFrameMetadataType
      * @return bool The result.
      */
      bool hasMetadata(OBFrameMetadataType type);

      /**
      * @brief Get the metadata value
      *
      * @param type The metadata type. refer to @ref OBFrameMetadataType
      * @return int64_t The metadata value.
      */
      int64_t getMetadataValue(OBFrameMetadataType type);

      示例

      查询元数据属性的使用模式是 “检查然后查询”

      const char *metaDataTypes[] = { "TIMESTAMP", "SENSOR_TIMESTAMP","FRAME_NUMBER",
                                      "AUTO_EXPOSURE", "EXPOSURE", "GAIN",
                                      "AUTO_WHITE_BALANCE", "WHITE_BALANCE", "BRIGHTNESS",
                                      "CONTRAST", "SATURATION", "SHARPNESS",
                                      "BACKLIGHT_COMPENSATION", "HUE", "GAMMA",
                                      "POWER_LINE_FREQUENCY", "LOW_LIGHT_COMPENSATION", "MANUAL_WHITE_BALANCE",
                                      "ACTUAL_FRAME_RATE", "FRAME_RATE",  "AE_ROI_LEFT",
                                      "AE_ROI_TOP",  "AE_ROI_RIGHT", "AE_ROI_BOTTOM",
                                      "EXPOSURE_PRIORITY", "HDR_SEQUENCE_NAME", "HDR_SEQUENCE_SIZE",
                                      "HDR_SEQUENCE_INDEX", "LASER_POWER", "LASER_POWER_MODE",
                                      "EMITTER_MODE", "GPIO_INPUT_DATA" };


      ob::Pipeline pipe;
      pipe.start(nullptr);

      auto frameSet = pipe.waitForFrames(100);
      auto colorFrame = frameSet->ColorFrame();


      for(int metaDataType = 0; metaDataType < OB_FRAME_METADATA_TYPE_COUNT; metaDataType++) {
           // 检查当前数据帧释放支持该类型元数据
          if(colorFrame->hasMetadata((OBFrameMetadataType)metaDataType)) {
             // 获取元数据值
             auto value = colorFrame->getMetadataValue((OBFrameMetadataType)metaDataType)
             std::cout << metaDataTypes[metaDataType] << ": " << value << std::endl;
          }
          else {
              std::cout << metaDataTypes[metaDataType] << ": " << "unsupported" << std::endl;
          }
      }

      OrbbecViewer中显示帧元数据

       image.png

      操作系统支持

      Windows操作系统  -从windows10开始,Microsoft支持元数据提取。有关详细信息,请参阅Windows安装指南。

      其他OS - 我们使用libuvc/libusb作为默认后端,它不需要任何操作即可启用元数据支持。

      设备支持

      目前,只有Orbbec Gemini 300系列支持这些api。


      友情链接: