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
 | |
| 
 |