89 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			89 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | /****************************************************************************
 | ||
|  | 
 | ||
|  | Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED. | ||
|  | 
 | ||
|  | This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT | ||
|  | be copied by any method or incorporated into another program without | ||
|  | the express written consent of Aerospace C.Power. This Information or any portion | ||
|  | thereof remains the property of Aerospace C.Power. The Information contained herein | ||
|  | is believed to be accurate and Aerospace C.Power assumes no responsibility or | ||
|  | liability for its use in any way and conveys no license or title under | ||
|  | any patent or copyright and makes no representation or warranty that this | ||
|  | Information is free from patent or copyright infringement. | ||
|  | 
 | ||
|  | ****************************************************************************/ | ||
|  | #ifndef AFFINETRANSACTION_H
 | ||
|  | #define AFFINETRANSACTION_H
 | ||
|  | 
 | ||
|  | #include <math.h>
 | ||
|  | #include "iot_io_api.h"
 | ||
|  | #include "os_mem_api.h"
 | ||
|  | 
 | ||
|  | #define WARP_SUCCESS 0
 | ||
|  | #define WARP_FAILURE 1
 | ||
|  | 
 | ||
|  | /*define a image struct including
 | ||
|  | image rows,cols,channels,and address of storing data*/ | ||
|  | typedef struct _image_data_fmt | ||
|  | { | ||
|  |     int32_t rows; | ||
|  |     int32_t cols; | ||
|  |     int32_t channels; | ||
|  |     uint8_t* data; | ||
|  | } image_data_fmt; | ||
|  | 
 | ||
|  | /*image rotation center in the source image*/ | ||
|  | typedef struct _point_2f | ||
|  | { | ||
|  |     float x; | ||
|  |     float y; | ||
|  | } point_2f; | ||
|  | 
 | ||
|  | /*rotation matrix*/ | ||
|  | typedef struct _rotation_matrix | ||
|  | { | ||
|  |     float rM[6]; | ||
|  | }rotation_matrix; | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief rotation_matrix2D_get() - get a rotation matrix | ||
|  |  * @param center:   Center of the rotation in the source image. | ||
|  |  * | ||
|  |  * @param angle:    Rotation angle in degrees. | ||
|  |  *                  Positive values mean counter-clockwise rotation | ||
|  |  *                  (the coordinate origin is assumed to be the top-left corner) | ||
|  |  * | ||
|  |  * @param scale:    Isotropic scale factor. | ||
|  |  * | ||
|  |  * @param matrix:   The output affine transformation,2x3 floating-point32_t | ||
|  |                     matrix. | ||
|  |  */ | ||
|  | void rotation_matrix2D_get | ||
|  |     (point_2f center, float angle, float scale, rotation_matrix *matrix); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief image_warp_affine() - Applies an affine transformation to an image. | ||
|  |  * @param source_image:     source image struct including image rows, cols, | ||
|  |                             channels, data. | ||
|  |  * | ||
|  |  * @param dst_image_rows:   Image rows. | ||
|  |  * | ||
|  |  * @param dst_image_cols:   Image cols. | ||
|  |  * | ||
|  |  * @param dst_image_data:   A pointer address to store Image data. | ||
|  |  * | ||
|  |  * @param matrix:           The output affine transformation, 2x3 | ||
|  |                             floating-point32_t matrix. | ||
|  |  * | ||
|  |  * @param enable_align:     The raw align 32byte for cnn ,enable and disable. | ||
|  |  * | ||
|  |  * @return                  WARP_SUCCESS -- for success case | ||
|  |  * @return                  WARP_FAILURE -- for failure case | ||
|  |  */ | ||
|  | int32_t image_warp_affine(image_data_fmt source_image, | ||
|  |     int32_t dst_image_rows, int32_t dst_image_cols, uint8_t *dst_image_data, | ||
|  |     rotation_matrix *matrix,bool_t enable_align); | ||
|  | 
 | ||
|  | #endif // AFFINETRANSACTION_H
 | ||
|  | 
 |