Opencv 3.1 project on GR-PEACH board

Fork of gr-peach-opencv-project by the do

Committer:
thedo
Date:
Tue Jul 04 06:23:13 2017 +0000
Revision:
170:54ff26da7eb6
Parent:
169:bdaa9537e072
project opencv 3.1 on GR PEACH board, no use SD card.

Who changed what in which revision?

UserRevisionLine numberNew 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 169:bdaa9537e072 93 #define STORAGE_NAME "fs"
thedo 169:bdaa9537e072 94 #define HAAR_CASCADE_FACE_PATH "/fs/lbpcascade_frontalface.xml"
thedo 169:bdaa9537e072 95
thedo 166:3a9487d57a5c 96 #define MODE_BTN_X 16
thedo 166:3a9487d57a5c 97 #define MODE_BTN_Y 235
thedo 166:3a9487d57a5c 98
thedo 166:3a9487d57a5c 99 #define REGIS_FACE_BTN_X 5
thedo 166:3a9487d57a5c 100 #define REGIS_FACE_BTN_Y 130
thedo 166:3a9487d57a5c 101
thedo 166:3a9487d57a5c 102 #define FACE_REG_ID_MENU_X 100
thedo 166:3a9487d57a5c 103 #define FACE_REG_ID_MENU_Y 50
thedo 166:3a9487d57a5c 104
thedo 166:3a9487d57a5c 105 #define FACE_REG_ACT_MENU_X 410
thedo 166:3a9487d57a5c 106 #define FACE_REG_ACT_MENU_Y 80
thedo 166:3a9487d57a5c 107
thedo 166:3a9487d57a5c 108 #define GESTURE_SAMPLING_BTN_X 410
thedo 166:3a9487d57a5c 109 #define GESTURE_SAMPLING_BTN_Y 110
thedo 166:3a9487d57a5c 110
thedo 166:3a9487d57a5c 111 #define M_PI (3.14159)
thedo 169:bdaa9537e072 112 #define HAAR_FILE_SIZE (51856)//(0xCA90)
thedo 166:3a9487d57a5c 113
thedo 166:3a9487d57a5c 114
thedo 166:3a9487d57a5c 115 enum APP_MODE{
thedo 166:3a9487d57a5c 116 FACE_DETECTION = 0,
thedo 166:3a9487d57a5c 117 MOTION_DETECTION,
thedo 166:3a9487d57a5c 118 FACE_RECOGNITION,
thedo 166:3a9487d57a5c 119 GUESTURE_RECOGNITION,
thedo 166:3a9487d57a5c 120 MODE_UNKNOWN
thedo 166:3a9487d57a5c 121 };
thedo 166:3a9487d57a5c 122
thedo 166:3a9487d57a5c 123 enum CLICKED_CODE
thedo 166:3a9487d57a5c 124 {
thedo 166:3a9487d57a5c 125 CLICKED_UNKNOWN = 0,
thedo 166:3a9487d57a5c 126 CLICKED_REGIS_FACE,
thedo 166:3a9487d57a5c 127 CLICKED_CHANGE_ID,
thedo 166:3a9487d57a5c 128 CLICKED_ADD,
thedo 166:3a9487d57a5c 129 CLICKED_IGNORE,
thedo 166:3a9487d57a5c 130 CLICKED_HAND_SAMPLING
thedo 166:3a9487d57a5c 131 };
thedo 166:3a9487d57a5c 132
thedo 166:3a9487d57a5c 133 #define MAX_COUNTOURS (500)
thedo 166:3a9487d57a5c 134
thedo 166:3a9487d57a5c 135 #if defined(__ICCARM__)
thedo 166:3a9487d57a5c 136 /* 32 bytes aligned */
thedo 166:3a9487d57a5c 137 #pragma data_alignment=32
thedo 166:3a9487d57a5c 138 static uint8_t user_frame_buffer0[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT];
thedo 166:3a9487d57a5c 139 #pragma data_alignment=32
thedo 166:3a9487d57a5c 140 static uint8_t user_frame_buffer1[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT];
thedo 166:3a9487d57a5c 141 #pragma data_alignment=32
thedo 166:3a9487d57a5c 142 static uint8_t user_frame_buffer2[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT];
thedo 166:3a9487d57a5c 143 #else
thedo 166:3a9487d57a5c 144 /* 32 bytes aligned */
thedo 166:3a9487d57a5c 145 static uint8_t user_frame_buffer0[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32)));
thedo 166:3a9487d57a5c 146 static uint8_t user_frame_buffer1[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32)));
thedo 166:3a9487d57a5c 147 static uint8_t user_frame_buffer2[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32)));
thedo 166:3a9487d57a5c 148 static uint8_t user_frame_buffer_draw[DRAW_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32)));
thedo 166:3a9487d57a5c 149 static uint8_t user_frame_buffer_draw_button[DRAW_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32)));
thedo 166:3a9487d57a5c 150 static uint8_t user_buf_draw_action_888[DRAW_BUFFER_STRIDE_LAYER_3 * LCD_PIXEL_HEIGHT]__attribute((aligned(32)));
thedo 166:3a9487d57a5c 151 static uint8_t my_frame[FRAME_BUFFER_STRIDE * LCD_PIXEL_HEIGHT]__attribute((aligned(32)));
thedo 166:3a9487d57a5c 152 #endif
thedo 166:3a9487d57a5c 153 static uint8_t * FrameBufferTbl[FRAME_BUFFER_NUM] = {user_frame_buffer0, user_frame_buffer1, user_frame_buffer2};
thedo 166:3a9487d57a5c 154 #if VIDEO_INPUT_METHOD == VIDEO_CVBS
thedo 166:3a9487d57a5c 155 static volatile int32_t vfield_count = 0;
thedo 166:3a9487d57a5c 156 #endif
thedo 166:3a9487d57a5c 157
thedo 166:3a9487d57a5c 158 #endif //DEFINE_H