Files
BPI-CM9-Linux/aml-comp/multimedia/gst-aml-utils/detect-library/inc/nn_detect_common.h
T
2026-08-24 10:03:24 +08:00

206 lines
5.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef _DETECT_COMMON_HH_
#define _DETECT_COMMON_HH_
#include "nn_detect_utils.h"
typedef unsigned char uint8_t;
typedef int det_status_t;
/// pixel format definition
typedef enum {
///< Y 1 8bpp(Single channel 8bit gray pixels )
PIX_FMT_GRAY8,
///< YUV 4:2:0 12bpp ( 3 channels, one brightness channel, the othe
/// two for the U component and V component channel, all channels are continuous)
PIX_FMT_YUV420P,
///< YUV 4:2:0 12bpp ( 2 channels, one channel is a continuous
/// luminance
/// channel, and the other channel is interleaved as a UV component )
PIX_FMT_NV12,
///< YUV 4:2:0 12bpp ( 2 channels, one channel is a continuous
/// luminance
/// channel, and the other channel is interleaved as a UV component )
PIX_FMT_NV21,
///< BGRA 8:8:8:8 32bpp ( 4-channel 32bit BGRA pixels )
PIX_FMT_BGRA8888,
///< BGR 8:8:8 24bpp ( 3-channel 24bit BGR pixels )
PIX_FMT_BGR888,
///< RGBA 8:8:8:8 32bpp ( 4-channel 32bit RGBA pixels )
PIX_FMT_RGBA8888,
///< RGB 8:8:8 24bpp ( 3-channel 24bit RGB pixels )
PIX_FMT_RGB888
} det_pixel_format;
typedef struct rect_point_t{
float left; ///< The value of left direction of the rectangle
float top; ///< The value of top direction of the rectangle
float right; ///< The value of right direction of the rectangle
float bottom; ///< The value of bottom direction of the rectangle
float score; ///< The value of score of the rectangle
} det_rect_point_t;
typedef struct circle_point_t{
float center; ///<circle ceter point
float radius; ///<radius
float score; ///<The value of score of the score
} det_circle_point_t;
/// float type point definition
typedef struct pointf_t {
float x; ///< The float value of the horizontal direction of the point
float y; ///< The float value of the vertical direction of the point
} det_pointf_t;
typedef struct single_point_t{
float x; ///<point x value
float y; ///<point y value
float param; ///<point param value if need
} det_single_point_t;
typedef struct input_image {
unsigned char *data; ///<picture data ptr value
det_pixel_format pixel_format; ///< color format
int width; ///< width value of pixel
int height; ///< height value of pixel
int channel; ///< stride or channel for picture
det_pointf_t inPoint[5];
} input_image_t;
typedef enum {
DET_SINGLEPOINT_TYPE = 1,
DET_RECTANGLE_TYPE = 2,
DET_CIRCLE_TYPE = 3,
DET_IMAGE_TYPE = 4,
} det_position_type;
typedef enum {
DET_YOLOFACE_V2 = 0,
DET_YOLO_V2,
DET_YOLO_V3,
DET_YOLO_TINY,
DET_SSD,
DET_MTCNN_V1,
DET_MTCNN_V2,
DET_FASTER_RCNN,
DET_DEEPLAB_V1,
DET_DEEPLAB_V2,
DET_DEEPLAB_V3,
DET_FACENET,
DET_AML_FACE_RECOGNITION,
DET_AML_FACE_DETECTION,
DET_AML_PERSON_DETECTION,
DET_AML_FACE_DETECT_RFB,
DET_BUTT,
} det_model_type;
typedef struct
{
float floatX[5];
float floatY[5];
}face_pts;
/// point definition
typedef struct det_position_t {
det_position_type type;
union {
det_rect_point_t rectPoint;
det_circle_point_t circlePoint;
det_single_point_t singlePoint;
input_image_t imageData;
}point;
face_pts tpts;
char reserved[4];
} det_position_float_t;
///integer type point definition
typedef struct pointi_t {
int x; ///< The integer value of the horizontal direction of the point
int y; ///< The integer value of the vertical direction of the point
} det_pointi_t;
///Classification of label results
typedef struct classify_result_t {
int label_id; ///> Classification of label ID
char label_name[MAX_LABEL_LENGTH]; ///> Label name
} det_classify_result_t;
///faec orientation
typedef enum {
DET_FACE_UP = 1, ///< Face up
DET_FACE_LEFT = 2, ///< Face left, the face was rotated counterclockwise by 90 degrees
DET_FACE_DOWN = 4, ///< Face down, the face was rotated counterclockwise by 180 degrees
DET_FACE_RIGHT = 8, ///< Face right, the face was rotated counterclockwise by 270 degrees
DET_FACE_UNKNOWN = 0xf ///< Face detection unknown, API automatically determines the face
/// orientation, but use more time, face_track do not support this parameter
} det_face_orientation;
typedef enum {
DEV_REVA = 0,
DEV_REVB,
DEV_SM1,
DEV_A1,
DEV_TM2,
DEV_C2,
DEV_BUTT,
DEV_C308,
DEV_AX201,
DEV_A311D2,
DEV_G12B,
DEV_T968D4,
DEV_S905X5,
} dev_type;
///@brief log output format
typedef enum{
DET_LOG_NULL = -1, ///< close all log output
DET_LOG_TERMINAL, ///< set log print to terminal
DET_LOG_FILE, ///< set log print to file
DET_LOG_SYSTEM ///< set log print to system
}det_log_format_t;
///@brief debug level
typedef enum{
DET_DEBUG_LEVEL_RELEASE = -1, ///< close debug
DET_DEBUG_LEVEL_ERROR, ///< error level,hightest level system will exit and crash
DET_DEBUG_LEVEL_WARN, ///< warning, system continue working,but something maybe wrong
DET_DEBUG_LEVEL_INFO, ///< info some value if needed
DET_DEBUG_LEVEL_PROCESS, ///< default,some process print
DET_DEBUG_LEVEL_DEBUG ///< debug level,just for debug
}det_debug_level_t;
typedef struct {
int detect_num;
det_classify_result_t *result_name;
det_position_float_t *point;
}det_detection_result_t;
typedef struct {
uint8_t uint8[512];
}det_recognition_result_t;
typedef struct {
int detect_num;
char reserved[4];
} det_detection_param_t;
typedef struct {
int length;
float scale;
} det_recognition_param_t;
typedef struct {
union{
det_recognition_param_t reg_param;
det_detection_param_t det_param;
} param;
}det_param_t;
typedef struct _DetectResult {
union {
det_recognition_result_t reg_result;
det_detection_result_t det_result;
} result;
}DetectResult,*pDetResult;
#endif