Opencv 3.1 project on GR-PEACH board
Fork of gr-peach-opencv-project by
define.h@166:3a9487d57a5c, 2017-06-29 (annotated)
- Committer:
- thedo
- Date:
- Thu Jun 29 11:00:41 2017 +0000
- Revision:
- 166:3a9487d57a5c
- Child:
- 169:bdaa9537e072
This is Opencv 3.1 project on GR-PEACH board
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
thedo | 166:3a9487d57a5c | 1 | #ifndef DEFINE_H |
thedo | 166:3a9487d57a5c | 2 | #define DEFINE_H |
thedo | 166:3a9487d57a5c | 3 | |
thedo | 166:3a9487d57a5c | 4 | #define VIDEO_CVBS (0) /* Analog Video Signal */ |
thedo | 166:3a9487d57a5c | 5 | #define VIDEO_CMOS_CAMERA (1) /* Digital Video Signal */ |
thedo | 166:3a9487d57a5c | 6 | #define VIDEO_YCBCR422 (0) |
thedo | 166:3a9487d57a5c | 7 | #define VIDEO_RGB888 (1) |
thedo | 166:3a9487d57a5c | 8 | #define VIDEO_RGB565 (2) |
thedo | 166:3a9487d57a5c | 9 | |
thedo | 166:3a9487d57a5c | 10 | /**** User Selection *********/ |
thedo | 166:3a9487d57a5c | 11 | /** Camera setting **/ |
thedo | 166:3a9487d57a5c | 12 | #define VIDEO_INPUT_METHOD (VIDEO_CMOS_CAMERA) /* Select VIDEO_CVBS or VIDEO_CMOS_CAMERA */ |
thedo | 166:3a9487d57a5c | 13 | #define VIDEO_INPUT_FORMAT (VIDEO_RGB565 ) /* Select VIDEO_YCBCR422 or VIDEO_RGB888 or VIDEO_RGB565 */ |
thedo | 166:3a9487d57a5c | 14 | #define USE_VIDEO_CH (0) /* Select 0 or 1 If selecting VIDEO_CMOS_CAMERA, should be 0.) */ |
thedo | 166:3a9487d57a5c | 15 | #define VIDEO_PAL (0) /* Select 0(NTSC) or 1(PAL) If selecting VIDEO_CVBS, this parameter is not referenced.) */ |
thedo | 166:3a9487d57a5c | 16 | /** LCD setting **/ |
thedo | 166:3a9487d57a5c | 17 | #define LCD_TYPE (0) /* Select 0(4.3inch) or 1(7.1inch) */ |
thedo | 166:3a9487d57a5c | 18 | /*****************************/ |
thedo | 166:3a9487d57a5c | 19 | |
thedo | 166:3a9487d57a5c | 20 | /** LCD shield config **/ |
thedo | 166:3a9487d57a5c | 21 | #if (LCD_TYPE == 0) |
thedo | 166:3a9487d57a5c | 22 | #include "LCD_shield_config_4_3inch.h" |
thedo | 166:3a9487d57a5c | 23 | #else |
thedo | 166:3a9487d57a5c | 24 | #include "LCD_shield_config_7_1inch.h" |
thedo | 166:3a9487d57a5c | 25 | #endif |
thedo | 166:3a9487d57a5c | 26 | |
thedo | 166:3a9487d57a5c | 27 | /** Video and Grapics (GRAPHICS_LAYER_0) parameter **/ |
thedo | 166:3a9487d57a5c | 28 | /* video input */ |
thedo | 166:3a9487d57a5c | 29 | #if USE_VIDEO_CH == (0) |
thedo | 166:3a9487d57a5c | 30 | #define VIDEO_INPUT_CH (DisplayBase::VIDEO_INPUT_CHANNEL_0) |
thedo | 166:3a9487d57a5c | 31 | #define VIDEO_INT_TYPE (DisplayBase::INT_TYPE_S0_VFIELD) |
thedo | 166:3a9487d57a5c | 32 | #else |
thedo | 166:3a9487d57a5c | 33 | #define VIDEO_INPUT_CH (DisplayBase::VIDEO_INPUT_CHANNEL_1) |
thedo | 166:3a9487d57a5c | 34 | #define VIDEO_INT_TYPE (DisplayBase::INT_TYPE_S1_VFIELD) |
thedo | 166:3a9487d57a5c | 35 | #endif |
thedo | 166:3a9487d57a5c | 36 | |
thedo | 166:3a9487d57a5c | 37 | /* NTSC or PAL */ |
thedo | 166:3a9487d57a5c | 38 | #if VIDEO_PAL == 0 |
thedo | 166:3a9487d57a5c | 39 | #define COL_SYS (DisplayBase::COL_SYS_NTSC_358) |
thedo | 166:3a9487d57a5c | 40 | #else |
thedo | 166:3a9487d57a5c | 41 | #define COL_SYS (DisplayBase::COL_SYS_PAL_443) |
thedo | 166:3a9487d57a5c | 42 | #endif |
thedo | 166:3a9487d57a5c | 43 | |
thedo | 166:3a9487d57a5c | 44 | /* Video input and LCD layer 0 output */ |
thedo | 166:3a9487d57a5c | 45 | #if VIDEO_INPUT_FORMAT == VIDEO_YCBCR422 |
thedo | 166:3a9487d57a5c | 46 | #define VIDEO_FORMAT (DisplayBase::VIDEO_FORMAT_YCBCR422) |
thedo | 166:3a9487d57a5c | 47 | #define GRAPHICS_FORMAT (DisplayBase::GRAPHICS_FORMAT_YCBCR422) |
thedo | 166:3a9487d57a5c | 48 | #define WR_RD_WRSWA (DisplayBase::WR_RD_WRSWA_NON) |
thedo | 166:3a9487d57a5c | 49 | #elif VIDEO_INPUT_FORMAT == VIDEO_RGB565 |
thedo | 166:3a9487d57a5c | 50 | #define VIDEO_FORMAT (DisplayBase::VIDEO_FORMAT_RGB565) |
thedo | 166:3a9487d57a5c | 51 | #define GRAPHICS_FORMAT (DisplayBase::GRAPHICS_FORMAT_RGB565) |
thedo | 166:3a9487d57a5c | 52 | #define WR_RD_WRSWA (DisplayBase::WR_RD_WRSWA_32_16BIT) |
thedo | 166:3a9487d57a5c | 53 | #else |
thedo | 166:3a9487d57a5c | 54 | #define VIDEO_FORMAT (DisplayBase::VIDEO_FORMAT_RGB888) |
thedo | 166:3a9487d57a5c | 55 | #define GRAPHICS_FORMAT (DisplayBase::GRAPHICS_FORMAT_RGB888) |
thedo | 166:3a9487d57a5c | 56 | #define WR_RD_WRSWA (DisplayBase::WR_RD_WRSWA_32BIT) |
thedo | 166:3a9487d57a5c | 57 | #endif |
thedo | 166:3a9487d57a5c | 58 | |
thedo | 166:3a9487d57a5c | 59 | /* The size of the video input is adjusted to the LCD size. */ |
thedo | 166:3a9487d57a5c | 60 | #define VIDEO_PIXEL_HW LCD_PIXEL_WIDTH |
thedo | 166:3a9487d57a5c | 61 | #define VIDEO_PIXEL_VW LCD_PIXEL_HEIGHT |
thedo | 166:3a9487d57a5c | 62 | |
thedo | 166:3a9487d57a5c | 63 | /*! Frame buffer stride: Frame buffer stride should be set to a multiple of 32 or 128 |
thedo | 166:3a9487d57a5c | 64 | in accordance with the frame buffer burst transfer mode. */ |
thedo | 166:3a9487d57a5c | 65 | /* FRAME BUFFER Parameter GRAPHICS_LAYER_0 */ |
thedo | 166:3a9487d57a5c | 66 | #define FRAME_BUFFER_NUM (3u) |
thedo | 166:3a9487d57a5c | 67 | #if ( VIDEO_INPUT_FORMAT == VIDEO_YCBCR422 || VIDEO_INPUT_FORMAT == VIDEO_RGB565 ) |
thedo | 166:3a9487d57a5c | 68 | #define FRAME_BUFFER_BYTE_PER_PIXEL (2u) |
thedo | 166:3a9487d57a5c | 69 | #else |
thedo | 166:3a9487d57a5c | 70 | #define FRAME_BUFFER_BYTE_PER_PIXEL (4u) |
thedo | 166:3a9487d57a5c | 71 | #endif |
thedo | 166:3a9487d57a5c | 72 | #define FRAME_BUFFER_STRIDE (((LCD_PIXEL_WIDTH * FRAME_BUFFER_BYTE_PER_PIXEL) + 31u) & ~31u) |
thedo | 166:3a9487d57a5c | 73 | |
thedo | 166:3a9487d57a5c | 74 | /* DRAW BUFFER Parameter GRAPHICS_LAYER_1 */ |
thedo | 166:3a9487d57a5c | 75 | #define DRAW_BUFFER_BYTE_PER_PIXEL (2u) |
thedo | 166:3a9487d57a5c | 76 | #define DRAW_BUFFER_STRIDE (((LCD_PIXEL_WIDTH * DRAW_BUFFER_BYTE_PER_PIXEL) + 31u) & ~31u) |
thedo | 166:3a9487d57a5c | 77 | |
thedo | 166:3a9487d57a5c | 78 | //thedo__ |
thedo | 166:3a9487d57a5c | 79 | #define DRAW_BUFFER_STRIDE_LAYER_3 (((LCD_PIXEL_WIDTH * 4) + 31u) & ~31u) |
thedo | 166:3a9487d57a5c | 80 | |
thedo | 166:3a9487d57a5c | 81 | /* Draw panel parameter */ |
thedo | 166:3a9487d57a5c | 82 | #define DRAW_POINT (1u) |
thedo | 166:3a9487d57a5c | 83 | |
thedo | 166:3a9487d57a5c | 84 | /* IMAGE DOWN SAMPLE*/ |
thedo | 166:3a9487d57a5c | 85 | #define IMG_DOWN_SAMPLE (2u) |
thedo | 166:3a9487d57a5c | 86 | |
thedo | 166:3a9487d57a5c | 87 | /* Touch number point */ |
thedo | 166:3a9487d57a5c | 88 | #define TOUCH_NUM (1u) |
thedo | 166:3a9487d57a5c | 89 | |
thedo | 166:3a9487d57a5c | 90 | #define SDCARD_NAME "SD" |
thedo | 166:3a9487d57a5c | 91 | #define SDCARD_PATH "/SD" |
thedo | 166:3a9487d57a5c | 92 | |
thedo | 166:3a9487d57a5c | 93 | #define MODE_BTN_X 16 |
thedo | 166:3a9487d57a5c | 94 | #define MODE_BTN_Y 235 |
thedo | 166:3a9487d57a5c | 95 | |
thedo | 166:3a9487d57a5c | 96 | #define REGIS_FACE_BTN_X 5 |
thedo | 166:3a9487d57a5c | 97 | #define REGIS_FACE_BTN_Y 130 |
thedo | 166:3a9487d57a5c | 98 | |
thedo | 166:3a9487d57a5c | 99 | #define FACE_REG_ID_MENU_X 100 |
thedo | 166:3a9487d57a5c | 100 | #define FACE_REG_ID_MENU_Y 50 |
thedo | 166:3a9487d57a5c | 101 | |
thedo | 166:3a9487d57a5c | 102 | #define FACE_REG_ACT_MENU_X 410 |
thedo | 166:3a9487d57a5c | 103 | #define FACE_REG_ACT_MENU_Y 80 |
thedo | 166:3a9487d57a5c | 104 | |
thedo | 166:3a9487d57a5c | 105 | #define GESTURE_SAMPLING_BTN_X 410 |
thedo | 166:3a9487d57a5c | 106 | #define GESTURE_SAMPLING_BTN_Y 110 |
thedo | 166:3a9487d57a5c | 107 | |
thedo | 166:3a9487d57a5c | 108 | #define M_PI (3.14159) |
thedo | 166:3a9487d57a5c | 109 | |
thedo | 166:3a9487d57a5c | 110 | |
thedo | 166:3a9487d57a5c | 111 | |
thedo | 166:3a9487d57a5c | 112 | enum APP_MODE{ |
thedo | 166:3a9487d57a5c | 113 | FACE_DETECTION = 0, |
thedo | 166:3a9487d57a5c | 114 | MOTION_DETECTION, |
thedo | 166:3a9487d57a5c | 115 | FACE_RECOGNITION, |
thedo | 166:3a9487d57a5c | 116 | GUESTURE_RECOGNITION, |
thedo | 166:3a9487d57a5c | 117 | MODE_UNKNOWN |
thedo | 166:3a9487d57a5c | 118 | }; |
thedo | 166:3a9487d57a5c | 119 | |
thedo | 166:3a9487d57a5c | 120 | enum CLICKED_CODE |
thedo | 166:3a9487d57a5c | 121 | { |
thedo | 166:3a9487d57a5c | 122 | CLICKED_UNKNOWN = 0, |
thedo | 166:3a9487d57a5c | 123 | CLICKED_REGIS_FACE, |
thedo | 166:3a9487d57a5c | 124 | CLICKED_CHANGE_ID, |
thedo | 166:3a9487d57a5c | 125 | CLICKED_ADD, |
thedo | 166:3a9487d57a5c | 126 | CLICKED_IGNORE, |
thedo | 166:3a9487d57a5c | 127 | CLICKED_HAND_SAMPLING |
thedo | 166:3a9487d57a5c | 128 | }; |
thedo | 166:3a9487d57a5c | 129 | |
thedo | 166:3a9487d57a5c | 130 | #define MAX_COUNTOURS (500) |
thedo | 166:3a9487d57a5c | 131 | |
thedo | 166:3a9487d57a5c | 132 | #if defined(__ICCARM__) |
thedo | 166:3a9487d57a5c | 133 | /* 32 bytes aligned */ |
thedo | 166:3a9487d57a5c | 134 | #pragma data_alignment=32 |
thedo | 166:3a9487d57a5c | 135 | static uint8_t user_frame_buffer0[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]; |
thedo | 166:3a9487d57a5c | 136 | #pragma data_alignment=32 |
thedo | 166:3a9487d57a5c | 137 | static uint8_t user_frame_buffer1[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]; |
thedo | 166:3a9487d57a5c | 138 | #pragma data_alignment=32 |
thedo | 166:3a9487d57a5c | 139 | static uint8_t user_frame_buffer2[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]; |
thedo | 166:3a9487d57a5c | 140 | #else |
thedo | 166:3a9487d57a5c | 141 | /* 32 bytes aligned */ |
thedo | 166:3a9487d57a5c | 142 | static uint8_t user_frame_buffer0[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32))); |
thedo | 166:3a9487d57a5c | 143 | static uint8_t user_frame_buffer1[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32))); |
thedo | 166:3a9487d57a5c | 144 | static uint8_t user_frame_buffer2[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32))); |
thedo | 166:3a9487d57a5c | 145 | static uint8_t user_frame_buffer_draw[DRAW_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32))); |
thedo | 166:3a9487d57a5c | 146 | static uint8_t user_frame_buffer_draw_button[DRAW_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32))); |
thedo | 166:3a9487d57a5c | 147 | static uint8_t user_buf_draw_action_888[DRAW_BUFFER_STRIDE_LAYER_3 * LCD_PIXEL_HEIGHT]__attribute((aligned(32))); |
thedo | 166:3a9487d57a5c | 148 | static uint8_t my_frame[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32))); |
thedo | 166:3a9487d57a5c | 149 | #endif |
thedo | 166:3a9487d57a5c | 150 | static uint8_t * FrameBufferTbl[FRAME_BUFFER_NUM] = {user_frame_buffer0, user_frame_buffer1, user_frame_buffer2}; |
thedo | 166:3a9487d57a5c | 151 | #if VIDEO_INPUT_METHOD == VIDEO_CVBS |
thedo | 166:3a9487d57a5c | 152 | static volatile int32_t vfield_count = 0; |
thedo | 166:3a9487d57a5c | 153 | #endif |
thedo | 166:3a9487d57a5c | 154 | |
thedo | 166:3a9487d57a5c | 155 | #endif //DEFINE_H |