#pragma once #include #include #include #include #include #include #include #include namespace fsdk { #ifndef DOXYGEN_SHOULD_SKIP_THIS DECLARE_SMARTPTR(IFaceDetectionBatch); #endif /** * @brief Face detection result batch interface. * */ struct IFaceDetectionBatch : public IRefCounted { /** * @brief Returns size. * @return size of the detections. * */ virtual size_t getSize() const noexcept = 0; /** * @brief Returns size of the results for the target index. * @param [in] imageIndex index of the image. * @return size of the results for the target index. * */ virtual size_t getSize(size_t imageIndex) const noexcept = 0; /** * @brief Returns detected face. * @param [in] img source image. * @param [in] imageIndex index of the image. * @param [in] detectionIndex index of the detection. * @return Detected face. * @see Face and Image for details. * @note images format must be R8G8B8, @see Format. * @note Result Face could be invalid if no any faces were * detected on the target image or parameters are invalid. * */ virtual Face getFace(const Image& img, size_t imageIndex, size_t detectionIndex) const noexcept = 0; /** * @brief Returns detection Span. * @param [in] index index of the detection. * @return span of detection coordinates in corresponding source images space. * @see Span and Detection for details. * @note all spans should be based on user owned continuous collections. * @note Result Span could be empty in two cases: * 1. If no any faces were detected on the target image. * 2. If detection request didn't contain the DT_BOX flag. @see DetectionType * */ virtual Span getDetections(size_t index = 0) const noexcept = 0; /** * @brief Returns Landmarks5 Span. * @param [in] index index of the landmarks object. * @return Span of Landmarks5. * @see Span and Landmarks5 for details. * @note all spans should be based on user owned continuous collections. * @note Result Span could be empty in two cases: * 1. If no any faces were detected on the target image. * 2. If detection request didn't contain the DT_LANDMARKS5 flag. @see DetectionType * */ virtual Span getLandmarks5(size_t index = 0) const noexcept = 0; /** * @brief Returns Landmarks68 Span. * @param [in] index index of the landmarks object. * @return Span of Landmarks68. * @see Span and Landmarks68 for details. * @note all spans should be based on user owned continuous collections. * @note Result Span could be empty in two cases: * 1. If no any faces were detected on the target image. * 2. If detection request didn't contain the DT_LANDMARKS68 flag. @see DetectionType * */ virtual Span getLandmarks68(size_t index = 0) const noexcept = 0; }; }