#pragma once /** * @file IHumanWarper.h * @brief Image warping base on Human detection * @copyright VisionLabs LLC * @date 17.11.2019 * */ #include #include #include #include #include namespace fsdk { #ifndef DOXYGEN_SHOULD_SKIP_THIS DECLARE_SMARTPTR(IHumanWarper); #endif /** * @brief Human detection area warper interface. * @details Performs cropping and resizing of an image for human descriptor extraction. * */ struct IHumanWarper : IRefCounted { /** * @brief Warp human detection. * @param [in] image source image. * @param [in] detection detection coordinates in image space. * @param [in/out] transformedImage warped image output. * @note if transformedImage has the same width, height, format * as the standard human warp and the same memory residence as source image has, * then output data will be just copied to transformedImage without any memory allocation. * New image will be allocated otherwise. * @return Result with error code. * @see Image, Detection, Result and FSDKError for details. * @note image format must be R8G8B8, @see Format. * */ virtual Result warp( const Image image, const Detection& detection, Image& transformedImage) const noexcept = 0; /** * @brief Warps humans on multiple images. * @param [in] images span of source images. * @param [in] detections span of detection coordinates in corresponding source images space. * @param [in/out] transformedImages span of input/output images where * result will be stored. * @note each detection in detections span corresponds to an image where this detection * was taken from by the same index(i.e detections[i] <--> images[i]), therefore, if there are * multiple detections on the same image user must duplicate those images in order for the first * statement to hold true. * @note if output images in transformed images span has the same image parameters as the standard warped image, * then output data will be just copied to those images without any memory allocation. * New images will be allocated otherwise. * @return Result with error code. * @see Span, Image, Detection, Result and FSDKError for details. * @note images format must be R8G8B8, @see Format. * @note all spans should be based on user owned continuous collections. * @note all spans should be equal size. * */ virtual Result warp( Span images, Span detections, Span transformedImages) const noexcept = 0; }; }