You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

73 lines
2.6 KiB

#pragma once
/**
* @file IHumanWarper.h
* @brief Image warping base on Human detection
* @copyright VisionLabs LLC
* @date 17.11.2019
* */
#include <fsdk/FSDKError.h>
#include <fsdk/IRefCounted.h>
#include <fsdk/Types/Detection.h>
#include <fsdk/Types/Image.h>
#include <fsdk/Types/Span.h>
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<FSDKError>
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<FSDKError>
warp(
Span<const Image> images,
Span<const Detection> detections,
Span<Image> transformedImages) const noexcept = 0;
};
}