Sample to operate omron HVC-P2 on GR-PEACH.

Dependencies:   AsciiFont

Information

Please see here for Japanese version.
日本語版はこちらを参照ください。

What is this ?

This is a sample that runs OMRON HVC-P2 with GR-PEACH. In this sample, you can try following among the functions of HVC-P2 : Human Body Detection, Face Detection, Age Estimation, Gender Estimation, Expression Estimation and Face Recognition.
Both GR-PEACH and HVC-P2 use Renesas RZ/A1H included ARM® Cortex™-A9 processor.

/media/uploads/dkato/hvcp2_demo_img3.jpg

HVC-P2 (Human Vision Components B5T-007001) is a human-sensing component that recognizes people. It is an integrated module that is built into other device and provides both the OKAO Vision's ten types of image sensing and a camera module.
For details, please refer to the following link.

In the HVCApi folder of this sample, the code of the following link destination Sample Code "SampleCode_rev.2.0.2" is used. (You can download from "Product Information" -> "Sample Code" in the middle of the following page.)
http://www.omron.com/ecb/products/mobile/hvc_p2/

Constitution

  1. HVC-P2 x 1
  2. USBA-microUSB conversion cable x 2
  3. USBA-microUSB conversion adapter x 1
  4. GR-PEACH x 1
  5. 4.3inc LCD shield x 1

/media/uploads/dkato/composition_hvcp2_demo.jpg

/media/uploads/dkato/composition_hvcp2_demo_2.jpg

Please close JP3 of GR-PEACH.
/media/uploads/RyoheiHagimoto/usb.jpg

How to use

It starts when connecting the power supply USB cable. At startup, all functions are turned off. By pressing the button on the right of the screen you can switch the function on / off.

  • Function ON : orange or green
  • Function OFF : blue or gray

Only the FACE button changes to "FACE (blue) -> FACE (orange) -> RECOGNITION (green)". When FACE (blue), following buttons are gray and can not be operated : AGE, GENDER and EXPRESSION.
"Response time" at the bottom left of the screen indicates "image processing + USB transfer time". It is not pure image processing time.

Register Data (Face Recognition)

Set the FACE button to RECOGNITION (green), and touch the screen with one person on the screen to register the face. In this sample, face registration will record up to 10 people. Delete the old registrant when registering after 11 people. Registration information is stored in the RAM on the HVC-P2 side. It is discarded by power off and reset.

/media/uploads/dkato/hvcp2_demo_img2.jpg

Change parameters

When you press Config icon at the bottom right of the screen, the parameter setting screen is displayed. You can change threshold value, detection size and face angle parameters.

/media/uploads/dkato/hvcp2_demo_config_icon.jpg
/media/uploads/dkato/hvcp2_demo_config.jpg

Change transfer image size

By pressing USER_BUTTON0 on the back of the board, the image transfer size switches in the order of "160 x 120 -> 320 x 240 -> no image".
/media/uploads/dkato/gr-peach_switch2.jpg

Committer:
dkato
Date:
Tue Sep 05 10:01:51 2017 +0000
Revision:
5:49a61433290a
Add HVC sensing result stabilizing library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkato 5:49a61433290a 1 /*---------------------------------------------------------------------------*/
dkato 5:49a61433290a 2 /* Copyright(C) 2017 OMRON Corporation */
dkato 5:49a61433290a 3 /* */
dkato 5:49a61433290a 4 /* Licensed under the Apache License, Version 2.0 (the "License"); */
dkato 5:49a61433290a 5 /* you may not use this file except in compliance with the License. */
dkato 5:49a61433290a 6 /* You may obtain a copy of the License at */
dkato 5:49a61433290a 7 /* */
dkato 5:49a61433290a 8 /* http://www.apache.org/licenses/LICENSE-2.0 */
dkato 5:49a61433290a 9 /* */
dkato 5:49a61433290a 10 /* Unless required by applicable law or agreed to in writing, software */
dkato 5:49a61433290a 11 /* distributed under the License is distributed on an "AS IS" BASIS, */
dkato 5:49a61433290a 12 /* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
dkato 5:49a61433290a 13 /* See the License for the specific language governing permissions and */
dkato 5:49a61433290a 14 /* limitations under the License. */
dkato 5:49a61433290a 15 /*---------------------------------------------------------------------------*/
dkato 5:49a61433290a 16
dkato 5:49a61433290a 17 #include "Interface.h"
dkato 5:49a61433290a 18 #include "STBValidValue.h"
dkato 5:49a61433290a 19 #include "STBCommonDef.h"
dkato 5:49a61433290a 20 #include "STBTracking.h"
dkato 5:49a61433290a 21 #include "STBFaceInfo.h"
dkato 5:49a61433290a 22 #include "STBMakeResult.h"
dkato 5:49a61433290a 23
dkato 5:49a61433290a 24
dkato 5:49a61433290a 25 /*Value range check*/
dkato 5:49a61433290a 26 #define ISVALID_RANGE( val , min , max ) ( ( (min) <= (val) ) && ( (val) <= (max) ) )
dkato 5:49a61433290a 27
dkato 5:49a61433290a 28
dkato 5:49a61433290a 29 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 30 /*IsValidValue : error check*/
dkato 5:49a61433290a 31 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 32 static STB_INT32 IsValidValue(
dkato 5:49a61433290a 33 const STB_INT32 nValue ,
dkato 5:49a61433290a 34 const STB_INT32 nLimitMin ,
dkato 5:49a61433290a 35 const STB_INT32 nLimitMax )
dkato 5:49a61433290a 36 {
dkato 5:49a61433290a 37 STB_INT32 nRet;
dkato 5:49a61433290a 38 for( nRet = STB_ERR_INVALIDPARAM; nRet != STB_NORMAL; nRet = STB_NORMAL )
dkato 5:49a61433290a 39 {
dkato 5:49a61433290a 40 if( ! ISVALID_RANGE( nValue , nLimitMin , nLimitMax ) )
dkato 5:49a61433290a 41 {
dkato 5:49a61433290a 42 break;
dkato 5:49a61433290a 43 }
dkato 5:49a61433290a 44 }
dkato 5:49a61433290a 45 return nRet;
dkato 5:49a61433290a 46 }
dkato 5:49a61433290a 47 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 48 /* IsValidPointer */
dkato 5:49a61433290a 49 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 50 static STB_INT32 IsValidPointer( const VOID* pPointer )
dkato 5:49a61433290a 51 {
dkato 5:49a61433290a 52 STB_INT32 nRet;
dkato 5:49a61433290a 53 for( nRet = STB_ERR_INVALIDPARAM; nRet != STB_NORMAL; nRet = STB_NORMAL )
dkato 5:49a61433290a 54 {
dkato 5:49a61433290a 55 if( NULL == pPointer ){ break; }
dkato 5:49a61433290a 56 }
dkato 5:49a61433290a 57 return nRet;
dkato 5:49a61433290a 58 }
dkato 5:49a61433290a 59
dkato 5:49a61433290a 60 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 61 /* GetVersion */
dkato 5:49a61433290a 62 /* Interface between SDK layer and functional layer */
dkato 5:49a61433290a 63 /* Responsible for error check and function call */
dkato 5:49a61433290a 64 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 65 STB_INT32 GetVersion( STB_INT8* pnMajorVersion , STB_INT8* pnMinorVersion ){
dkato 5:49a61433290a 66 STB_INT32 nRet;
dkato 5:49a61433290a 67
dkato 5:49a61433290a 68 for( nRet = STB_ERR_INVALIDPARAM; nRet != STB_NORMAL; nRet = STB_NORMAL )
dkato 5:49a61433290a 69 {
dkato 5:49a61433290a 70 nRet = IsValidPointer( pnMajorVersion );
dkato 5:49a61433290a 71 if( STB_NORMAL != nRet )
dkato 5:49a61433290a 72 {
dkato 5:49a61433290a 73 break;
dkato 5:49a61433290a 74 }
dkato 5:49a61433290a 75 nRet = IsValidPointer( pnMinorVersion );
dkato 5:49a61433290a 76 if( STB_NORMAL != nRet )
dkato 5:49a61433290a 77 {
dkato 5:49a61433290a 78 break;
dkato 5:49a61433290a 79 }
dkato 5:49a61433290a 80 *pnMajorVersion = VERSION_MAJOR;
dkato 5:49a61433290a 81 *pnMinorVersion = VERSION_MINOR;
dkato 5:49a61433290a 82 }
dkato 5:49a61433290a 83
dkato 5:49a61433290a 84 return nRet;
dkato 5:49a61433290a 85 }
dkato 5:49a61433290a 86 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 87 /* CalcStbSize */
dkato 5:49a61433290a 88 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 89 STB_UINT32 CalcStbSize ( STBExecFlg *execFlg , STB_UINT32 nTraCntMax)
dkato 5:49a61433290a 90 {
dkato 5:49a61433290a 91 STB_UINT32 retVal ;
dkato 5:49a61433290a 92
dkato 5:49a61433290a 93 retVal = 0 ;
dkato 5:49a61433290a 94
dkato 5:49a61433290a 95 retVal += 100 ;///Margin : alignment
dkato 5:49a61433290a 96
dkato 5:49a61433290a 97
dkato 5:49a61433290a 98
dkato 5:49a61433290a 99
dkato 5:49a61433290a 100 retVal += sizeof( STB_TR_DET );//wSrcTr
dkato 5:49a61433290a 101 if( execFlg->bodyTr == STB_TRUE )
dkato 5:49a61433290a 102 {
dkato 5:49a61433290a 103 retVal += sizeof( TraObj ) * nTraCntMax ; // trBody
dkato 5:49a61433290a 104 retVal += sizeof( ROI_DET ) * nTraCntMax ; // wSrcTr->bdDet
dkato 5:49a61433290a 105 retVal += sizeof( STB_TR_RES_BODYS ) ; // wDstTrBody
dkato 5:49a61433290a 106 retVal += sizeof( STB_TR_RES ) * nTraCntMax ; // wDstTrBody->body
dkato 5:49a61433290a 107 }
dkato 5:49a61433290a 108 if( execFlg->faceTr == STB_TRUE )
dkato 5:49a61433290a 109 {
dkato 5:49a61433290a 110 retVal += sizeof( TraObj ) * nTraCntMax ; // trFace
dkato 5:49a61433290a 111 retVal += sizeof( ROI_DET ) * nTraCntMax ; // wSrcTr->fcDet
dkato 5:49a61433290a 112 retVal += sizeof( STB_TR_RES_FACES ) ; // wDstTrFace
dkato 5:49a61433290a 113 retVal += sizeof( STB_TR_RES ) * nTraCntMax ; // wDstTrFace->face
dkato 5:49a61433290a 114 }
dkato 5:49a61433290a 115 if( execFlg->gen == STB_TRUE
dkato 5:49a61433290a 116 || execFlg->age == STB_TRUE
dkato 5:49a61433290a 117 || execFlg->fr == STB_TRUE
dkato 5:49a61433290a 118 || execFlg->exp == STB_TRUE
dkato 5:49a61433290a 119 || execFlg->dir == STB_TRUE
dkato 5:49a61433290a 120 || execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 121 || execFlg->bli == STB_TRUE
dkato 5:49a61433290a 122 )
dkato 5:49a61433290a 123 {
dkato 5:49a61433290a 124 retVal += sizeof( FaceObj ) * nTraCntMax ; // infoFace
dkato 5:49a61433290a 125 }
dkato 5:49a61433290a 126
dkato 5:49a61433290a 127
dkato 5:49a61433290a 128 if( execFlg->gen == STB_TRUE
dkato 5:49a61433290a 129 || execFlg->age == STB_TRUE
dkato 5:49a61433290a 130 //|| execFlg->fr == STB_TRUE
dkato 5:49a61433290a 131 || execFlg->exp == STB_TRUE
dkato 5:49a61433290a 132 || execFlg->dir == STB_TRUE
dkato 5:49a61433290a 133 || execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 134 || execFlg->bli == STB_TRUE
dkato 5:49a61433290a 135 )
dkato 5:49a61433290a 136 {
dkato 5:49a61433290a 137 retVal += sizeof( STB_PE_DET ) ; // wSrcPe
dkato 5:49a61433290a 138 retVal += sizeof( FACE_DET ) * nTraCntMax ; // wSrcPe->fcDet
dkato 5:49a61433290a 139 retVal += sizeof( STB_PE_RES ) ; // wDstPe
dkato 5:49a61433290a 140 retVal += sizeof( STB_PE_FACE ) * nTraCntMax ; // wDstPe->peFace
dkato 5:49a61433290a 141
dkato 5:49a61433290a 142 }
dkato 5:49a61433290a 143
dkato 5:49a61433290a 144 if( execFlg->fr == STB_TRUE )
dkato 5:49a61433290a 145 {
dkato 5:49a61433290a 146 retVal += sizeof( STB_FR_DET ) ; // wSrcFr
dkato 5:49a61433290a 147 retVal += sizeof( FR_DET ) * nTraCntMax ; // wSrcFr->fcDet
dkato 5:49a61433290a 148 retVal += sizeof( STB_FR_RES ) ; // wDstFr
dkato 5:49a61433290a 149 retVal += sizeof( FR_RES ) * nTraCntMax ; // wDstFr->frFace
dkato 5:49a61433290a 150 }
dkato 5:49a61433290a 151
dkato 5:49a61433290a 152
dkato 5:49a61433290a 153 return retVal;
dkato 5:49a61433290a 154 }
dkato 5:49a61433290a 155 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 156 /* ShareStbSize */
dkato 5:49a61433290a 157 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 158 void ShareStbSize ( STBHANDLE handle , STB_INT8 *stbPtr )
dkato 5:49a61433290a 159 {
dkato 5:49a61433290a 160 STB_UINT32 nTraCntMax;
dkato 5:49a61433290a 161
dkato 5:49a61433290a 162 nTraCntMax = handle->nTraCntMax;
dkato 5:49a61433290a 163
dkato 5:49a61433290a 164
dkato 5:49a61433290a 165 handle->wSrcTr = (STB_TR_DET*)stbPtr; stbPtr += ( sizeof( STB_TR_DET ) );
dkato 5:49a61433290a 166 if( handle->execFlg->bodyTr == STB_TRUE )
dkato 5:49a61433290a 167 {
dkato 5:49a61433290a 168 handle->trBody = ( TraObj* ) stbPtr; stbPtr += ( sizeof( TraObj ) * nTraCntMax );
dkato 5:49a61433290a 169 handle->wSrcTr->bdDet = ( ROI_DET* ) stbPtr; stbPtr += ( sizeof( ROI_DET ) * nTraCntMax );
dkato 5:49a61433290a 170 handle->wDstTrBody = ( STB_TR_RES_BODYS* ) stbPtr; stbPtr += ( sizeof( STB_TR_RES_BODYS ));
dkato 5:49a61433290a 171 handle->wDstTrBody->body = ( STB_TR_RES* ) stbPtr; stbPtr += ( sizeof( STB_TR_RES ) * nTraCntMax );
dkato 5:49a61433290a 172 }
dkato 5:49a61433290a 173 if( handle->execFlg->faceTr == STB_TRUE )
dkato 5:49a61433290a 174 {
dkato 5:49a61433290a 175 handle->trFace = ( TraObj* ) stbPtr; stbPtr += ( sizeof( TraObj ) * nTraCntMax );
dkato 5:49a61433290a 176 handle->wSrcTr->fcDet = ( ROI_DET* ) stbPtr; stbPtr += ( sizeof( ROI_DET ) * nTraCntMax );
dkato 5:49a61433290a 177 handle->wDstTrFace = ( STB_TR_RES_FACES* ) stbPtr; stbPtr += ( sizeof( STB_TR_RES_FACES ));
dkato 5:49a61433290a 178 handle->wDstTrFace->face = ( STB_TR_RES* ) stbPtr; stbPtr += ( sizeof( STB_TR_RES ) * nTraCntMax );
dkato 5:49a61433290a 179 }
dkato 5:49a61433290a 180
dkato 5:49a61433290a 181 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 182 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 183 || handle->execFlg->fr == STB_TRUE
dkato 5:49a61433290a 184 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 185 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 186 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 187 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 188 )
dkato 5:49a61433290a 189 {
dkato 5:49a61433290a 190 handle->infoFace = ( FaceObj* ) stbPtr; stbPtr += ( sizeof( FaceObj ) * nTraCntMax );
dkato 5:49a61433290a 191 }
dkato 5:49a61433290a 192
dkato 5:49a61433290a 193 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 194 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 195 //||| handle->execFlg->fr == STB_TRUE
dkato 5:49a61433290a 196 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 197 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 198 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 199 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 200 )
dkato 5:49a61433290a 201 {
dkato 5:49a61433290a 202 handle->wSrcPe = ( STB_PE_DET* ) stbPtr; stbPtr += ( sizeof( STB_PE_DET ) );
dkato 5:49a61433290a 203 handle->wSrcPe->fcDet = ( FACE_DET* ) stbPtr; stbPtr += ( sizeof( FACE_DET ) * nTraCntMax );
dkato 5:49a61433290a 204 handle->wDstPe = ( STB_PE_RES* ) stbPtr; stbPtr += ( sizeof( STB_PE_RES ) );
dkato 5:49a61433290a 205 handle->wDstPe->peFace = ( STB_PE_FACE*) stbPtr; stbPtr += ( sizeof( STB_PE_FACE) * nTraCntMax );
dkato 5:49a61433290a 206 }
dkato 5:49a61433290a 207
dkato 5:49a61433290a 208 if( handle->execFlg->fr == STB_TRUE )
dkato 5:49a61433290a 209 {
dkato 5:49a61433290a 210 handle->wSrcFr = ( STB_FR_DET* ) stbPtr; stbPtr += ( sizeof( STB_FR_DET ) );
dkato 5:49a61433290a 211 handle->wSrcFr->fcDet = ( FR_DET* ) stbPtr; stbPtr += ( sizeof( FR_DET ) * nTraCntMax );
dkato 5:49a61433290a 212 handle->wDstFr = ( STB_FR_RES* ) stbPtr; stbPtr += ( sizeof( STB_FR_RES ) );
dkato 5:49a61433290a 213 handle->wDstFr->frFace = ( FR_RES* ) stbPtr; stbPtr += ( sizeof( FR_RES ) * nTraCntMax );
dkato 5:49a61433290a 214 }
dkato 5:49a61433290a 215
dkato 5:49a61433290a 216
dkato 5:49a61433290a 217 }
dkato 5:49a61433290a 218 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 219 /*Create handle*/
dkato 5:49a61433290a 220 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 221 STBHANDLE CreateHandle ( STB_UINT32 stbExecFlg )
dkato 5:49a61433290a 222 {
dkato 5:49a61433290a 223
dkato 5:49a61433290a 224 STBHANDLE handle;
dkato 5:49a61433290a 225 STB_UINT32 tmpVal;
dkato 5:49a61433290a 226 STB_UINT32 tmpFLG;
dkato 5:49a61433290a 227
dkato 5:49a61433290a 228
dkato 5:49a61433290a 229
dkato 5:49a61433290a 230 /*do STB handle's malloc here*/
dkato 5:49a61433290a 231 handle = NULL ;
dkato 5:49a61433290a 232 handle = ( STBHANDLE )malloc( sizeof( *handle ) );
dkato 5:49a61433290a 233 if( handle == NULL )
dkato 5:49a61433290a 234 {
dkato 5:49a61433290a 235 return NULL;/* FAIL : Create STB handle */
dkato 5:49a61433290a 236 }
dkato 5:49a61433290a 237
dkato 5:49a61433290a 238 /* ExecFlg */
dkato 5:49a61433290a 239 handle->execFlg = ( STBExecFlg* )malloc( sizeof( STBExecFlg ) );
dkato 5:49a61433290a 240 if( handle->execFlg == NULL )
dkato 5:49a61433290a 241 {
dkato 5:49a61433290a 242 free ( handle ) ;/*Free of Malloc things at the present time*/
dkato 5:49a61433290a 243 return NULL ;/* FAIL : Create STB handle ExecFlg */
dkato 5:49a61433290a 244 }
dkato 5:49a61433290a 245 if( ( stbExecFlg & STB_FUNC_BD )== STB_FUNC_BD ){ handle->execFlg->bodyTr = STB_TRUE ;}else{ handle->execFlg->bodyTr = STB_FALSE ;}
dkato 5:49a61433290a 246 if( ( stbExecFlg & STB_FUNC_DT )== STB_FUNC_DT ){ handle->execFlg->faceTr = STB_TRUE ;}else{ handle->execFlg->faceTr = STB_FALSE ;}
dkato 5:49a61433290a 247 if( ( stbExecFlg & STB_FUNC_PT )== STB_FUNC_PT ){ handle->execFlg->dir = STB_TRUE ;}else{ handle->execFlg->dir = STB_FALSE ;}
dkato 5:49a61433290a 248 if( ( stbExecFlg & STB_FUNC_AG )== STB_FUNC_AG ){ handle->execFlg->age = STB_TRUE ;}else{ handle->execFlg->age = STB_FALSE ;}
dkato 5:49a61433290a 249 if( ( stbExecFlg & STB_FUNC_GN )== STB_FUNC_GN ){ handle->execFlg->gen = STB_TRUE ;}else{ handle->execFlg->gen = STB_FALSE ;}
dkato 5:49a61433290a 250 if( ( stbExecFlg & STB_FUNC_GZ )== STB_FUNC_GZ ){ handle->execFlg->gaz = STB_TRUE ;}else{ handle->execFlg->gaz = STB_FALSE ;}
dkato 5:49a61433290a 251 if( ( stbExecFlg & STB_FUNC_BL )== STB_FUNC_BL ){ handle->execFlg->bli = STB_TRUE ;}else{ handle->execFlg->bli = STB_FALSE ;}
dkato 5:49a61433290a 252 if( ( stbExecFlg & STB_FUNC_EX )== STB_FUNC_EX ){ handle->execFlg->exp = STB_TRUE ;}else{ handle->execFlg->exp = STB_FALSE ;}
dkato 5:49a61433290a 253 if( ( stbExecFlg & STB_FUNC_FR )== STB_FUNC_FR ){ handle->execFlg->fr = STB_TRUE ;}else{ handle->execFlg->fr = STB_FALSE ;}
dkato 5:49a61433290a 254 handle->execFlg->pet = STB_FALSE ;
dkato 5:49a61433290a 255 handle->execFlg->hand = STB_FALSE ;
dkato 5:49a61433290a 256
dkato 5:49a61433290a 257
dkato 5:49a61433290a 258 if( handle->execFlg->faceTr == STB_FALSE )
dkato 5:49a61433290a 259 {
dkato 5:49a61433290a 260 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 261 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 262 || handle->execFlg->fr == STB_TRUE
dkato 5:49a61433290a 263 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 264 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 265 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 266 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 267 )
dkato 5:49a61433290a 268 {
dkato 5:49a61433290a 269 free ( handle->execFlg );/*Free of Malloc things at the present time*/
dkato 5:49a61433290a 270 free ( handle );/*Free of Malloc things at the present time*/
dkato 5:49a61433290a 271 return NULL ;/*Invalid input parameter stbExecFlg*/
dkato 5:49a61433290a 272 }
dkato 5:49a61433290a 273 }
dkato 5:49a61433290a 274
dkato 5:49a61433290a 275
dkato 5:49a61433290a 276 /*Setting the initial value here.*/
dkato 5:49a61433290a 277 handle->nTraCntBody = 0;
dkato 5:49a61433290a 278 handle->nTraCntFace = 0;
dkato 5:49a61433290a 279 handle->nDetCntMax = DETECT_CNT_MAX ;/*A maximum number of detected(input) people*/
dkato 5:49a61433290a 280 handle->nTraCntMax = TRACK_CNT_MAX ;/*A maximum number of tracking(output) people*/
dkato 5:49a61433290a 281 handle->nExecuted = STB_FALSE ;
dkato 5:49a61433290a 282 handle->nInitialized= STB_FALSE ;
dkato 5:49a61433290a 283 handle->nDetCntBody = 0;
dkato 5:49a61433290a 284 handle->nDetCntFace = 0;
dkato 5:49a61433290a 285 handle->trFace = NULL;
dkato 5:49a61433290a 286 handle->trBody = NULL;
dkato 5:49a61433290a 287 handle->infoFace = NULL;
dkato 5:49a61433290a 288 handle->wSrcTr = NULL;
dkato 5:49a61433290a 289 handle->wDstTrFace = NULL;
dkato 5:49a61433290a 290 handle->wDstTrBody = NULL;
dkato 5:49a61433290a 291 handle->wSrcPe = NULL;
dkato 5:49a61433290a 292 handle->wDstPe = NULL;
dkato 5:49a61433290a 293 handle->wSrcFr = NULL;
dkato 5:49a61433290a 294 handle->wDstFr = NULL;
dkato 5:49a61433290a 295
dkato 5:49a61433290a 296
dkato 5:49a61433290a 297 /* Do Malloc to things that need Malloc in STB handle */
dkato 5:49a61433290a 298 handle->stbPtr = NULL ;
dkato 5:49a61433290a 299 handle->hTrHandle = NULL ;
dkato 5:49a61433290a 300 handle->hPeHandle = NULL ;
dkato 5:49a61433290a 301 handle->hFrHandle = NULL ;
dkato 5:49a61433290a 302 tmpVal = CalcStbSize ( handle->execFlg ,handle->nTraCntMax ); /*calculate necessary amount in the STB handle*/
dkato 5:49a61433290a 303 handle->stbPtr = ( STB_INT8 * )malloc( tmpVal ) ; /*keep necessary amount in the STB handle*/
dkato 5:49a61433290a 304 if( handle->stbPtr == NULL )
dkato 5:49a61433290a 305 {
dkato 5:49a61433290a 306 free ( handle->execFlg );/*Free of Malloc things at the present time*/
dkato 5:49a61433290a 307 free ( handle );/*Free of Malloc things at the present time*/
dkato 5:49a61433290a 308 return NULL ;
dkato 5:49a61433290a 309 }
dkato 5:49a61433290a 310 ShareStbSize ( handle, handle->stbPtr); /* Malloc-area is allocated to things that need Malloc in STB handle */
dkato 5:49a61433290a 311
dkato 5:49a61433290a 312 /*Create handles for child functions*/
dkato 5:49a61433290a 313 tmpFLG = STB_TRUE;
dkato 5:49a61433290a 314 if( handle->execFlg->bodyTr == STB_TRUE
dkato 5:49a61433290a 315 || handle->execFlg->faceTr == STB_TRUE
dkato 5:49a61433290a 316 )
dkato 5:49a61433290a 317 {
dkato 5:49a61433290a 318 handle->hTrHandle = STB_Tr_CreateHandle( handle->execFlg ,handle->nDetCntMax, handle->nTraCntMax );
dkato 5:49a61433290a 319 if( handle->hTrHandle == NULL ){ tmpFLG = STB_FALSE; }
dkato 5:49a61433290a 320 }
dkato 5:49a61433290a 321 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 322 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 323 //|| handle->execFlg->fr == STB_TRUE
dkato 5:49a61433290a 324 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 325 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 326 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 327 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 328 )
dkato 5:49a61433290a 329 {
dkato 5:49a61433290a 330 handle->hPeHandle = STB_Pe_CreateHandle( handle->execFlg ,handle->nTraCntMax );
dkato 5:49a61433290a 331 if( handle->hPeHandle == NULL ){ tmpFLG = STB_FALSE; }
dkato 5:49a61433290a 332 }
dkato 5:49a61433290a 333 if( handle->execFlg->fr == STB_TRUE )
dkato 5:49a61433290a 334 {
dkato 5:49a61433290a 335 handle->hFrHandle = STB_Fr_CreateHandle( handle->nTraCntMax );
dkato 5:49a61433290a 336 if( handle->hFrHandle == NULL ){ tmpFLG = STB_FALSE; }
dkato 5:49a61433290a 337 }
dkato 5:49a61433290a 338
dkato 5:49a61433290a 339 if( tmpFLG == STB_FALSE )
dkato 5:49a61433290a 340 {
dkato 5:49a61433290a 341 /*When Malloc failed, Free of Malloc data at the present time*/
dkato 5:49a61433290a 342 if( handle->hTrHandle != NULL ) { STB_Tr_DeleteHandle ( handle->hTrHandle ) ;}
dkato 5:49a61433290a 343 if( handle->hPeHandle != NULL ) { STB_Pe_DeleteHandle ( handle->hPeHandle ) ;}
dkato 5:49a61433290a 344 if( handle->hFrHandle != NULL ) { STB_Fr_DeleteHandle ( handle->hFrHandle ) ;}
dkato 5:49a61433290a 345 if( handle->stbPtr != NULL ) { free ( handle->stbPtr ) ;}/*Free of Malloc things at the present time*/
dkato 5:49a61433290a 346 if( handle->execFlg != NULL ) { free ( handle->execFlg ) ;}/*Free of Malloc things at the present time*/
dkato 5:49a61433290a 347 if( handle != NULL ) { free ( handle ) ;}/*Free of Malloc things at the present time*/
dkato 5:49a61433290a 348 return NULL;
dkato 5:49a61433290a 349 }
dkato 5:49a61433290a 350
dkato 5:49a61433290a 351 return handle;
dkato 5:49a61433290a 352 }
dkato 5:49a61433290a 353 //-------------------------------------------------------------------------------------------------------------------
dkato 5:49a61433290a 354 // DeleteHandle /*Delete handle*/
dkato 5:49a61433290a 355 //-------------------------------------------------------------------------------------------------------------------
dkato 5:49a61433290a 356 STB_INT32 DeleteHandle(STBHANDLE handle)
dkato 5:49a61433290a 357 {
dkato 5:49a61433290a 358
dkato 5:49a61433290a 359 STB_INT32 nRet;
dkato 5:49a61433290a 360
dkato 5:49a61433290a 361 /*NULL check*/
dkato 5:49a61433290a 362 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 363 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 364 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 365 }
dkato 5:49a61433290a 366
dkato 5:49a61433290a 367 /*Malloc things here, do free*/
dkato 5:49a61433290a 368 if( handle->hTrHandle != NULL ) { STB_Tr_DeleteHandle ( handle->hTrHandle ) ;}
dkato 5:49a61433290a 369 if( handle->hPeHandle != NULL ) { STB_Pe_DeleteHandle ( handle->hPeHandle ) ;}
dkato 5:49a61433290a 370 if( handle->hFrHandle != NULL ) { STB_Fr_DeleteHandle ( handle->hFrHandle ) ;}
dkato 5:49a61433290a 371 if( handle->stbPtr != NULL ) { free ( handle->stbPtr ) ;}
dkato 5:49a61433290a 372 if( handle->execFlg != NULL ) { free ( handle->execFlg ) ;}
dkato 5:49a61433290a 373 if( handle != NULL ) { free ( handle ) ;}
dkato 5:49a61433290a 374
dkato 5:49a61433290a 375
dkato 5:49a61433290a 376
dkato 5:49a61433290a 377 return STB_NORMAL;
dkato 5:49a61433290a 378 }
dkato 5:49a61433290a 379 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 380 /* SetFrameResult : Get the result of stbINPUT */
dkato 5:49a61433290a 381 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 382 STB_INT32 SetFrameResult ( STBHANDLE handle , const STB_FRAME_RESULT *stbINPUTResult )
dkato 5:49a61433290a 383 {
dkato 5:49a61433290a 384
dkato 5:49a61433290a 385 STB_INT32 nRet;
dkato 5:49a61433290a 386
dkato 5:49a61433290a 387 /*NULL check*/
dkato 5:49a61433290a 388 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 389 if(nRet != STB_NORMAL)
dkato 5:49a61433290a 390 {
dkato 5:49a61433290a 391 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 392 }
dkato 5:49a61433290a 393
dkato 5:49a61433290a 394 nRet = IsValidPointer(stbINPUTResult);
dkato 5:49a61433290a 395 if(nRet != STB_NORMAL)
dkato 5:49a61433290a 396 {
dkato 5:49a61433290a 397 return STB_ERR_INVALIDPARAM;
dkato 5:49a61433290a 398 }
dkato 5:49a61433290a 399
dkato 5:49a61433290a 400
dkato 5:49a61433290a 401 /*Input value check*/
dkato 5:49a61433290a 402 nRet = STB_IsValidValue ( stbINPUTResult ,handle->execFlg );
dkato 5:49a61433290a 403 if(nRet != STB_TRUE)
dkato 5:49a61433290a 404 {
dkato 5:49a61433290a 405 return STB_ERR_INVALIDPARAM;
dkato 5:49a61433290a 406 }
dkato 5:49a61433290a 407
dkato 5:49a61433290a 408
dkato 5:49a61433290a 409 /*Clear the unexecuted state flag*/
dkato 5:49a61433290a 410 handle->nExecuted = STB_FALSE;
dkato 5:49a61433290a 411
dkato 5:49a61433290a 412 /*Set the received result to the handle*/
dkato 5:49a61433290a 413 if( handle->execFlg->bodyTr == STB_TRUE )
dkato 5:49a61433290a 414 {
dkato 5:49a61433290a 415 handle->nDetCntBody = stbINPUTResult->bodys.nCount;
dkato 5:49a61433290a 416 SetTrackingObjectBody ( &(stbINPUTResult->bodys) ,handle->trBody );
dkato 5:49a61433290a 417 }
dkato 5:49a61433290a 418 if( handle->execFlg->faceTr == STB_TRUE )
dkato 5:49a61433290a 419 {
dkato 5:49a61433290a 420 handle->nDetCntFace = stbINPUTResult->faces.nCount;
dkato 5:49a61433290a 421 SetTrackingObjectFace ( &(stbINPUTResult->faces) ,handle->trFace );
dkato 5:49a61433290a 422 }
dkato 5:49a61433290a 423
dkato 5:49a61433290a 424 /*Set detection result to Face/Property/Recognition data*/
dkato 5:49a61433290a 425 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 426 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 427 || handle->execFlg->fr == STB_TRUE
dkato 5:49a61433290a 428 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 429 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 430 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 431 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 432 )
dkato 5:49a61433290a 433 {
dkato 5:49a61433290a 434 SetFaceObject ( &(stbINPUTResult->faces) ,handle->infoFace ,handle->execFlg , handle->nTraCntMax );
dkato 5:49a61433290a 435 }
dkato 5:49a61433290a 436
dkato 5:49a61433290a 437
dkato 5:49a61433290a 438 handle->nInitialized = STB_TRUE;
dkato 5:49a61433290a 439
dkato 5:49a61433290a 440 return STB_NORMAL;
dkato 5:49a61433290a 441 }
dkato 5:49a61433290a 442
dkato 5:49a61433290a 443 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 444 /*Execute : Main process execution*/
dkato 5:49a61433290a 445 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 446 STB_INT32 Execute ( STBHANDLE handle )
dkato 5:49a61433290a 447 {
dkato 5:49a61433290a 448 STB_INT32 nRet ;
dkato 5:49a61433290a 449 STB_TR_DET *srcTr = handle->wSrcTr ;/*TR : input data*/
dkato 5:49a61433290a 450 STB_TR_RES_FACES *dstTrFace = handle->wDstTrFace;/*TR : output data*/
dkato 5:49a61433290a 451 STB_TR_RES_BODYS *dstTrBody = handle->wDstTrBody;/*TR : output data*/
dkato 5:49a61433290a 452 STB_PE_DET *srcPe = handle->wSrcPe ;/*PR : Input data*/
dkato 5:49a61433290a 453 STB_PE_RES *dstPe = handle->wDstPe ;/*PE : Output data*/
dkato 5:49a61433290a 454 STB_FR_DET *srcFr = handle->wSrcFr ;/*FR : Input data*/
dkato 5:49a61433290a 455 STB_FR_RES *dstFr = handle->wDstFr ;/*FR : Output data*/
dkato 5:49a61433290a 456
dkato 5:49a61433290a 457
dkato 5:49a61433290a 458
dkato 5:49a61433290a 459 /*NULL check*/
dkato 5:49a61433290a 460 nRet = IsValidPointer ( handle );
dkato 5:49a61433290a 461 if( nRet != STB_NORMAL )
dkato 5:49a61433290a 462 {
dkato 5:49a61433290a 463 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 464 }
dkato 5:49a61433290a 465
dkato 5:49a61433290a 466 if( handle->nInitialized != STB_TRUE)
dkato 5:49a61433290a 467 {
dkato 5:49a61433290a 468 return STB_ERR_INITIALIZE;
dkato 5:49a61433290a 469 }
dkato 5:49a61433290a 470 handle->nInitialized = STB_FALSE;
dkato 5:49a61433290a 471 handle->nExecuted = STB_FALSE;
dkato 5:49a61433290a 472
dkato 5:49a61433290a 473 /* TR ------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 474 if( handle->execFlg->faceTr == STB_TRUE )
dkato 5:49a61433290a 475 {
dkato 5:49a61433290a 476 SetSrcTrFace ( handle->nDetCntFace , handle->trFace , srcTr ); /*Creation of tracking input data from handle information*/
dkato 5:49a61433290a 477 }
dkato 5:49a61433290a 478 if( handle->execFlg->bodyTr == STB_TRUE )
dkato 5:49a61433290a 479 {
dkato 5:49a61433290a 480 SetSrcTrBody ( handle->nDetCntBody , handle->trBody , srcTr ); /*Creation of tracking input data from handle information*/
dkato 5:49a61433290a 481 }
dkato 5:49a61433290a 482 nRet = STB_Tr_SetDetect ( handle->hTrHandle , srcTr); /*Frame information settings*/
dkato 5:49a61433290a 483 if( nRet != STB_NORMAL) { return nRet; }
dkato 5:49a61433290a 484 nRet = STB_Tr_Execute ( handle->hTrHandle ); /*execute tracking*/
dkato 5:49a61433290a 485 if( nRet != STB_NORMAL) { return nRet; }
dkato 5:49a61433290a 486 nRet = STB_Tr_GetResult ( handle->hTrHandle , dstTrFace , dstTrBody ); /*get the tracking result*/
dkato 5:49a61433290a 487 if( nRet != STB_NORMAL) { return nRet; }
dkato 5:49a61433290a 488 if( handle->execFlg->faceTr == STB_TRUE )
dkato 5:49a61433290a 489 {
dkato 5:49a61433290a 490 SetTrackingInfoToFace ( dstTrFace,&(handle->nTraCntFace),handle->trFace);/*copy to handle the tracking result*/
dkato 5:49a61433290a 491 }
dkato 5:49a61433290a 492 if( handle->execFlg->bodyTr == STB_TRUE )
dkato 5:49a61433290a 493 {
dkato 5:49a61433290a 494 SetTrackingInfoToBody ( dstTrBody,&(handle->nTraCntBody),handle->trBody);/*copy to handle the tracking result*/
dkato 5:49a61433290a 495 }
dkato 5:49a61433290a 496
dkato 5:49a61433290a 497
dkato 5:49a61433290a 498 /*Association of face information and tracking ID--------------------------------------------------------------------------------*/
dkato 5:49a61433290a 499 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 500 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 501 || handle->execFlg->fr == STB_TRUE
dkato 5:49a61433290a 502 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 503 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 504 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 505 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 506 )
dkato 5:49a61433290a 507 {
dkato 5:49a61433290a 508 SetTrackingIDToFace ( handle->nTraCntFace ,handle->nDetCntFace, handle->trFace,handle->infoFace , handle->execFlg );
dkato 5:49a61433290a 509 }
dkato 5:49a61433290a 510
dkato 5:49a61433290a 511 /* Fr ------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 512 if( handle->execFlg->fr == STB_TRUE )
dkato 5:49a61433290a 513 {
dkato 5:49a61433290a 514 SetFaceToFrInfo ( handle->nTraCntFace,handle->infoFace,srcFr ); /*Creation of recognition input data from handle information*/
dkato 5:49a61433290a 515 nRet = STB_Fr_SetDetect ( handle->hFrHandle,srcFr ); /*Pass to the recognized stabilization*/
dkato 5:49a61433290a 516 if(nRet != STB_NORMAL ){ return nRet; }
dkato 5:49a61433290a 517 nRet = STB_Fr_Execute ( handle->hFrHandle ); /* Recognized stabilization execution*/
dkato 5:49a61433290a 518 if(nRet != STB_NORMAL ){ return nRet; }
dkato 5:49a61433290a 519 nRet = STB_Fr_GetResult ( handle->hFrHandle,dstFr ); /*get the recognized stabilization results*/
dkato 5:49a61433290a 520 if(nRet != STB_NORMAL ){ return nRet; }
dkato 5:49a61433290a 521 SetFrInfoToFace ( handle->nTraCntFace,dstFr,handle->infoFace ); /*Copy to handle the recognized stabilization results*/
dkato 5:49a61433290a 522 }
dkato 5:49a61433290a 523
dkato 5:49a61433290a 524 /* Pe ------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 525 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 526 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 527 //|| handle->execFlg->fr == STB_TRUE
dkato 5:49a61433290a 528 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 529 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 530 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 531 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 532 )
dkato 5:49a61433290a 533 {
dkato 5:49a61433290a 534 SetFaceToPeInfo ( handle->nTraCntFace,handle->infoFace,srcPe ); /*Creation of property input data from handle information*/
dkato 5:49a61433290a 535 nRet = STB_Pe_SetDetect ( handle->hPeHandle,srcPe ); /*Pass to property stabilization*/
dkato 5:49a61433290a 536 if( nRet != STB_NORMAL ){ return nRet; }
dkato 5:49a61433290a 537 nRet = STB_Pe_Execute ( handle->hPeHandle ); /*Property stabilization execution*/
dkato 5:49a61433290a 538 if( nRet != STB_NORMAL ){ return nRet; }
dkato 5:49a61433290a 539 nRet = STB_Pe_GetResult ( handle->hPeHandle,dstPe ); /*get the property stabilization results*/
dkato 5:49a61433290a 540 if( nRet != STB_NORMAL ){ return nRet; }
dkato 5:49a61433290a 541 SetPeInfoToFace ( handle->nTraCntFace,dstPe,handle->infoFace , handle->execFlg ); /*Copy to handle the property stabilization results*/
dkato 5:49a61433290a 542 }
dkato 5:49a61433290a 543
dkato 5:49a61433290a 544
dkato 5:49a61433290a 545
dkato 5:49a61433290a 546 /*Set execution completion flag--------------------------------------------------*/
dkato 5:49a61433290a 547 handle->nExecuted = STB_TRUE;
dkato 5:49a61433290a 548
dkato 5:49a61433290a 549 return STB_NORMAL;
dkato 5:49a61433290a 550 }
dkato 5:49a61433290a 551 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 552 /* GetFaces : Getting stabilization results of face*/
dkato 5:49a61433290a 553 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 554 STB_INT32 GetFaces(STBHANDLE handle, STB_UINT32 *face_count, STB_FACE *face )
dkato 5:49a61433290a 555 {
dkato 5:49a61433290a 556 STB_INT32 nRet , i;
dkato 5:49a61433290a 557
dkato 5:49a61433290a 558 /*NULL check*/
dkato 5:49a61433290a 559 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 560 if(nRet != STB_NORMAL)
dkato 5:49a61433290a 561 {
dkato 5:49a61433290a 562 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 563 }
dkato 5:49a61433290a 564 nRet = IsValidPointer(face_count);
dkato 5:49a61433290a 565 if(nRet != STB_NORMAL)
dkato 5:49a61433290a 566 {
dkato 5:49a61433290a 567 return nRet;
dkato 5:49a61433290a 568 }
dkato 5:49a61433290a 569 nRet = IsValidPointer(face);
dkato 5:49a61433290a 570 if(nRet != STB_NORMAL)
dkato 5:49a61433290a 571 {
dkato 5:49a61433290a 572 return nRet;
dkato 5:49a61433290a 573 }
dkato 5:49a61433290a 574 if( handle->nExecuted != STB_TRUE)
dkato 5:49a61433290a 575 {
dkato 5:49a61433290a 576 return STB_ERR_INITIALIZE;
dkato 5:49a61433290a 577 }
dkato 5:49a61433290a 578
dkato 5:49a61433290a 579 /*init*/
dkato 5:49a61433290a 580 *face_count = 0;
dkato 5:49a61433290a 581 for( i = 0 ; i < handle->nTraCntMax ; i++ )
dkato 5:49a61433290a 582 {
dkato 5:49a61433290a 583 face[i].nDetectID = -1;
dkato 5:49a61433290a 584 face[i].nTrackingID = -1;
dkato 5:49a61433290a 585 face[i].center.x = 0;
dkato 5:49a61433290a 586 face[i].center.y = 0;
dkato 5:49a61433290a 587 face[i].nSize = 0;
dkato 5:49a61433290a 588 face[i].conf = STB_CONF_NO_DATA ;
dkato 5:49a61433290a 589 face[i].age.conf = STB_CONF_NO_DATA ;
dkato 5:49a61433290a 590 face[i].age.status = STB_STATUS_NO_DATA;
dkato 5:49a61433290a 591 face[i].age.value = -1;
dkato 5:49a61433290a 592 face[i].blink.ratioL = -1;
dkato 5:49a61433290a 593 face[i].blink.ratioR = -1;
dkato 5:49a61433290a 594 face[i].blink.status = STB_STATUS_NO_DATA;
dkato 5:49a61433290a 595 face[i].direction.conf = STB_CONF_NO_DATA ;
dkato 5:49a61433290a 596 face[i].direction.pitch = -1;
dkato 5:49a61433290a 597 face[i].direction.roll = -1;
dkato 5:49a61433290a 598 face[i].direction.status = STB_STATUS_NO_DATA;
dkato 5:49a61433290a 599 face[i].direction.yaw = -1;
dkato 5:49a61433290a 600 face[i].expression.conf = STB_CONF_NO_DATA ;
dkato 5:49a61433290a 601 face[i].expression.status = STB_STATUS_NO_DATA;
dkato 5:49a61433290a 602 face[i].expression.value = -1;
dkato 5:49a61433290a 603 face[i].gaze.conf = STB_CONF_NO_DATA ;
dkato 5:49a61433290a 604 face[i].gaze.LR = -1;
dkato 5:49a61433290a 605 face[i].gaze.status = STB_STATUS_NO_DATA;
dkato 5:49a61433290a 606 face[i].gaze.UD = -1;
dkato 5:49a61433290a 607 face[i].gender.conf = STB_CONF_NO_DATA ;
dkato 5:49a61433290a 608 face[i].gender.status = STB_STATUS_NO_DATA;
dkato 5:49a61433290a 609 face[i].gender.value = -1;
dkato 5:49a61433290a 610 face[i].recognition.conf = STB_CONF_NO_DATA ;
dkato 5:49a61433290a 611 face[i].recognition.status = STB_STATUS_NO_DATA;
dkato 5:49a61433290a 612 face[i].recognition.value = -1;
dkato 5:49a61433290a 613 }
dkato 5:49a61433290a 614
dkato 5:49a61433290a 615 /*Set the result to the structure*/
dkato 5:49a61433290a 616 if( handle->execFlg->faceTr == STB_TRUE )
dkato 5:49a61433290a 617 {
dkato 5:49a61433290a 618 *face_count = handle->nTraCntFace;
dkato 5:49a61433290a 619 SetFaceToResult ( handle->nTraCntFace ,handle->trFace ,handle->infoFace ,face , handle->execFlg );
dkato 5:49a61433290a 620 }
dkato 5:49a61433290a 621
dkato 5:49a61433290a 622 return STB_NORMAL;
dkato 5:49a61433290a 623 }
dkato 5:49a61433290a 624 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 625 /* GetBodies : Getting stabilization results of body */
dkato 5:49a61433290a 626 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 627 STB_INT32 GetBodies(STBHANDLE handle, STB_UINT32 *body_count, STB_BODY *body)
dkato 5:49a61433290a 628 {
dkato 5:49a61433290a 629 STB_INT32 nRet , i;
dkato 5:49a61433290a 630
dkato 5:49a61433290a 631 /*NULL check*/
dkato 5:49a61433290a 632 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 633 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 634 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 635 }
dkato 5:49a61433290a 636 nRet = IsValidPointer(body_count);
dkato 5:49a61433290a 637 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 638 return nRet;
dkato 5:49a61433290a 639 }
dkato 5:49a61433290a 640 nRet = IsValidPointer(body);
dkato 5:49a61433290a 641 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 642 return nRet;
dkato 5:49a61433290a 643 }
dkato 5:49a61433290a 644 if( handle->nExecuted != STB_TRUE){
dkato 5:49a61433290a 645 return STB_ERR_INITIALIZE;
dkato 5:49a61433290a 646 }
dkato 5:49a61433290a 647
dkato 5:49a61433290a 648
dkato 5:49a61433290a 649 /*init*/
dkato 5:49a61433290a 650 *body_count = 0;
dkato 5:49a61433290a 651 for( i = 0 ; i < handle->nTraCntMax ; i++ )
dkato 5:49a61433290a 652 {
dkato 5:49a61433290a 653 body[i].nDetectID = -1;
dkato 5:49a61433290a 654 body[i].nTrackingID = -1;
dkato 5:49a61433290a 655 body[i].center.x = 0;
dkato 5:49a61433290a 656 body[i].center.y = 0;
dkato 5:49a61433290a 657 body[i].nSize = 0;
dkato 5:49a61433290a 658 body[i].conf = STB_CONF_NO_DATA ;
dkato 5:49a61433290a 659 }
dkato 5:49a61433290a 660
dkato 5:49a61433290a 661 /*Set the result to the structure*/
dkato 5:49a61433290a 662 if( handle->execFlg->bodyTr == STB_TRUE )
dkato 5:49a61433290a 663 {
dkato 5:49a61433290a 664 *body_count = handle->nTraCntBody;
dkato 5:49a61433290a 665 SetBodyToResult(handle->nTraCntBody,handle->trBody, body);
dkato 5:49a61433290a 666 }
dkato 5:49a61433290a 667 return STB_NORMAL;
dkato 5:49a61433290a 668 }
dkato 5:49a61433290a 669 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 670 /* Clear */
dkato 5:49a61433290a 671 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 672 STB_INT32 Clear(STBHANDLE handle)
dkato 5:49a61433290a 673 {
dkato 5:49a61433290a 674 STB_INT32 nRet;
dkato 5:49a61433290a 675
dkato 5:49a61433290a 676 /*NULL check*/
dkato 5:49a61433290a 677 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 678 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 679 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 680 }
dkato 5:49a61433290a 681
dkato 5:49a61433290a 682 STB_Tr_Clear( handle->hTrHandle );
dkato 5:49a61433290a 683 STB_Pe_Clear( handle->hPeHandle );
dkato 5:49a61433290a 684 if( handle->execFlg->fr == STB_TRUE )
dkato 5:49a61433290a 685 {
dkato 5:49a61433290a 686 STB_Fr_Clear( handle->hFrHandle );
dkato 5:49a61433290a 687 }
dkato 5:49a61433290a 688
dkato 5:49a61433290a 689 handle->nInitialized = STB_FALSE;
dkato 5:49a61433290a 690 handle->nExecuted = STB_FALSE;
dkato 5:49a61433290a 691
dkato 5:49a61433290a 692
dkato 5:49a61433290a 693 return STB_NORMAL;
dkato 5:49a61433290a 694
dkato 5:49a61433290a 695 }
dkato 5:49a61433290a 696 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 697 /*Setting function (wrapper for child libraries)*/
dkato 5:49a61433290a 698 /*------------------------------------------------------------------------------------------------------------------*/
dkato 5:49a61433290a 699 STB_INT32 SetTrackingRetryCount(STBHANDLE handle, STB_INT32 nMaxRetryCount){
dkato 5:49a61433290a 700 STB_INT32 nRet;
dkato 5:49a61433290a 701 /*NULL check*/
dkato 5:49a61433290a 702 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 703 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 704 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 705 }
dkato 5:49a61433290a 706
dkato 5:49a61433290a 707 return STB_Tr_SetRetryCount(handle->hTrHandle,nMaxRetryCount);
dkato 5:49a61433290a 708 }
dkato 5:49a61433290a 709
dkato 5:49a61433290a 710 STB_INT32 GetTrackingRetryCount(STBHANDLE handle, STB_INT32 *pnMaxRetryCount){
dkato 5:49a61433290a 711 STB_INT32 nRet;
dkato 5:49a61433290a 712 /*NULL check*/
dkato 5:49a61433290a 713 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 714 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 715 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 716 }
dkato 5:49a61433290a 717
dkato 5:49a61433290a 718 return STB_Tr_GetRetryCount(handle->hTrHandle,pnMaxRetryCount);
dkato 5:49a61433290a 719 }
dkato 5:49a61433290a 720
dkato 5:49a61433290a 721 STB_INT32 SetTrackingSteadinessParam(STBHANDLE handle, STB_INT32 nPosSteadinessParam, STB_INT32 nSizeSteadinessParam){
dkato 5:49a61433290a 722 STB_INT32 nRet;
dkato 5:49a61433290a 723 /*NULL check*/
dkato 5:49a61433290a 724 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 725 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 726 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 727 }
dkato 5:49a61433290a 728
dkato 5:49a61433290a 729 return STB_Tr_SetStedinessParam(handle->hTrHandle, nPosSteadinessParam, nSizeSteadinessParam);
dkato 5:49a61433290a 730 }
dkato 5:49a61433290a 731
dkato 5:49a61433290a 732 STB_INT32 GetTrackingSteadinessParam(STBHANDLE handle, STB_INT32 *pnPosSteadinessParam, STB_INT32 *pnSizeSteadinessParam){
dkato 5:49a61433290a 733 STB_INT32 nRet;
dkato 5:49a61433290a 734 /*NULL check*/
dkato 5:49a61433290a 735 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 736 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 737 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 738 }
dkato 5:49a61433290a 739
dkato 5:49a61433290a 740 return STB_Tr_GetStedinessParam(handle->hTrHandle, pnPosSteadinessParam, pnSizeSteadinessParam);
dkato 5:49a61433290a 741 }
dkato 5:49a61433290a 742
dkato 5:49a61433290a 743 STB_INT32 SetPropertyThreshold(STBHANDLE handle, STB_INT32 nThreshold){
dkato 5:49a61433290a 744 STB_INT32 nRet;
dkato 5:49a61433290a 745 /*NULL check*/
dkato 5:49a61433290a 746 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 747 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 748 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 749 }
dkato 5:49a61433290a 750
dkato 5:49a61433290a 751 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 752 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 753 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 754 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 755 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 756 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 757 )
dkato 5:49a61433290a 758 {
dkato 5:49a61433290a 759 }else
dkato 5:49a61433290a 760 {
dkato 5:49a61433290a 761 return STB_NORMAL;
dkato 5:49a61433290a 762 }
dkato 5:49a61433290a 763
dkato 5:49a61433290a 764 return STB_Pe_SetFaceDirThreshold(handle->hPeHandle, nThreshold);
dkato 5:49a61433290a 765 }
dkato 5:49a61433290a 766
dkato 5:49a61433290a 767 STB_INT32 GetPropertyThreshold(STBHANDLE handle, STB_INT32 *pnThreshold){
dkato 5:49a61433290a 768 STB_INT32 nRet;
dkato 5:49a61433290a 769 /*NULL check*/
dkato 5:49a61433290a 770 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 771 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 772 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 773 }
dkato 5:49a61433290a 774 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 775 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 776 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 777 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 778 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 779 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 780 )
dkato 5:49a61433290a 781 {
dkato 5:49a61433290a 782 }else
dkato 5:49a61433290a 783 {
dkato 5:49a61433290a 784 return STB_NORMAL;
dkato 5:49a61433290a 785 }
dkato 5:49a61433290a 786 return STB_Pe_GetFaceDirThreshold(handle->hPeHandle, pnThreshold);
dkato 5:49a61433290a 787 }
dkato 5:49a61433290a 788
dkato 5:49a61433290a 789 STB_INT32 SetPropertyAngle(STBHANDLE handle,STB_INT32 nMinUDAngle, STB_INT32 nMaxUDAngle,
dkato 5:49a61433290a 790 STB_INT32 nMinLRAngle, STB_INT32 nMaxLRAngle){
dkato 5:49a61433290a 791 STB_INT32 nRet;
dkato 5:49a61433290a 792 /*NULL check*/
dkato 5:49a61433290a 793 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 794 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 795 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 796 }
dkato 5:49a61433290a 797 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 798 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 799 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 800 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 801 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 802 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 803 )
dkato 5:49a61433290a 804 {
dkato 5:49a61433290a 805 }else
dkato 5:49a61433290a 806 {
dkato 5:49a61433290a 807 return STB_NORMAL;
dkato 5:49a61433290a 808 }
dkato 5:49a61433290a 809 return STB_Pe_SetFaceDirMinMax(handle->hPeHandle, nMinUDAngle, nMaxUDAngle, nMinLRAngle, nMaxLRAngle);
dkato 5:49a61433290a 810 }
dkato 5:49a61433290a 811
dkato 5:49a61433290a 812 STB_INT32 GetPropertyAngle(STBHANDLE handle, STB_INT32 *pnMinUDAngle , STB_INT32 *pnMaxUDAngle ,
dkato 5:49a61433290a 813 STB_INT32 *pnMinLRAngle , STB_INT32 *pnMaxLRAngle ){
dkato 5:49a61433290a 814 STB_INT32 nRet;
dkato 5:49a61433290a 815 /*NULL check*/
dkato 5:49a61433290a 816 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 817 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 818 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 819 }
dkato 5:49a61433290a 820 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 821 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 822 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 823 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 824 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 825 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 826 )
dkato 5:49a61433290a 827 {
dkato 5:49a61433290a 828 }else
dkato 5:49a61433290a 829 {
dkato 5:49a61433290a 830 return STB_NORMAL;
dkato 5:49a61433290a 831 }
dkato 5:49a61433290a 832 return STB_Pe_GetFaceDirMinMax(handle->hPeHandle, pnMinUDAngle, pnMaxUDAngle, pnMinLRAngle, pnMaxLRAngle);
dkato 5:49a61433290a 833 }
dkato 5:49a61433290a 834 STB_INT32 SetPropertyFrameCount(STBHANDLE handle, STB_INT32 nFrameCount){
dkato 5:49a61433290a 835 STB_INT32 nRet;
dkato 5:49a61433290a 836 /*NULL check*/
dkato 5:49a61433290a 837 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 838 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 839 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 840 }
dkato 5:49a61433290a 841 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 842 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 843 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 844 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 845 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 846 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 847 )
dkato 5:49a61433290a 848 {
dkato 5:49a61433290a 849 }else
dkato 5:49a61433290a 850 {
dkato 5:49a61433290a 851 return STB_NORMAL;
dkato 5:49a61433290a 852 }
dkato 5:49a61433290a 853 return STB_Pe_SetFrameCount(handle->hPeHandle, nFrameCount);
dkato 5:49a61433290a 854 }
dkato 5:49a61433290a 855 STB_INT32 GetPropertyFrameCount(STBHANDLE handle, STB_INT32 *pnFrameCount){
dkato 5:49a61433290a 856 STB_INT32 nRet;
dkato 5:49a61433290a 857 /*NULL check*/
dkato 5:49a61433290a 858 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 859 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 860 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 861 }
dkato 5:49a61433290a 862 if( handle->execFlg->gen == STB_TRUE
dkato 5:49a61433290a 863 || handle->execFlg->age == STB_TRUE
dkato 5:49a61433290a 864 || handle->execFlg->exp == STB_TRUE
dkato 5:49a61433290a 865 || handle->execFlg->dir == STB_TRUE
dkato 5:49a61433290a 866 || handle->execFlg->gaz == STB_TRUE
dkato 5:49a61433290a 867 || handle->execFlg->bli == STB_TRUE
dkato 5:49a61433290a 868 )
dkato 5:49a61433290a 869 {
dkato 5:49a61433290a 870 }else
dkato 5:49a61433290a 871 {
dkato 5:49a61433290a 872 return STB_NORMAL;
dkato 5:49a61433290a 873 }
dkato 5:49a61433290a 874 return STB_Pe_GetFrameCount(handle->hPeHandle, pnFrameCount);
dkato 5:49a61433290a 875 }
dkato 5:49a61433290a 876 STB_INT32 SetRecognitionThreshold(STBHANDLE handle, STB_INT32 nThreshold){
dkato 5:49a61433290a 877 STB_INT32 nRet;
dkato 5:49a61433290a 878 /*NULL check*/
dkato 5:49a61433290a 879 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 880 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 881 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 882 }
dkato 5:49a61433290a 883 if( handle->execFlg->fr == STB_FALSE )
dkato 5:49a61433290a 884 {
dkato 5:49a61433290a 885 return STB_NORMAL;
dkato 5:49a61433290a 886 }
dkato 5:49a61433290a 887 return STB_Fr_SetFaceDirThreshold(handle->hFrHandle, nThreshold);
dkato 5:49a61433290a 888 }
dkato 5:49a61433290a 889 STB_INT32 GetRecognitionThreshold(STBHANDLE handle, STB_INT32 *pnThreshold){
dkato 5:49a61433290a 890 STB_INT32 nRet;
dkato 5:49a61433290a 891 /*NULL check*/
dkato 5:49a61433290a 892 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 893 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 894 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 895 }
dkato 5:49a61433290a 896 if( handle->execFlg->fr == STB_FALSE )
dkato 5:49a61433290a 897 {
dkato 5:49a61433290a 898 return STB_NORMAL;
dkato 5:49a61433290a 899 }
dkato 5:49a61433290a 900 return STB_Fr_GetFaceDirThreshold(handle->hFrHandle, pnThreshold);
dkato 5:49a61433290a 901 }
dkato 5:49a61433290a 902
dkato 5:49a61433290a 903 STB_INT32 SetRecognitionAngle(STBHANDLE handle, STB_INT32 nMinUDAngle, STB_INT32 nMaxUDAngle,
dkato 5:49a61433290a 904 STB_INT32 nMinLRAngle, STB_INT32 nMaxLRAngle){
dkato 5:49a61433290a 905 STB_INT32 nRet;
dkato 5:49a61433290a 906 /*NULL check*/
dkato 5:49a61433290a 907 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 908 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 909 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 910 }
dkato 5:49a61433290a 911 if( handle->execFlg->fr == STB_FALSE )
dkato 5:49a61433290a 912 {
dkato 5:49a61433290a 913 return STB_NORMAL;
dkato 5:49a61433290a 914 }
dkato 5:49a61433290a 915 return STB_Fr_SetFaceDirMinMax(handle->hFrHandle, nMinUDAngle, nMaxUDAngle, nMinLRAngle , nMaxLRAngle);
dkato 5:49a61433290a 916 }
dkato 5:49a61433290a 917
dkato 5:49a61433290a 918 STB_INT32 GetRecognitionAngle(STBHANDLE handle, STB_INT32 *pnMinUDAngle , STB_INT32 *pnMaxUDAngle ,
dkato 5:49a61433290a 919 STB_INT32 *pnMinLRAngle , STB_INT32 *pnMaxLRAngle){
dkato 5:49a61433290a 920 STB_INT32 nRet;
dkato 5:49a61433290a 921 /*NULL check*/
dkato 5:49a61433290a 922 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 923 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 924 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 925 }
dkato 5:49a61433290a 926 nRet = IsValidPointer(pnMinUDAngle);
dkato 5:49a61433290a 927 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 928 return STB_ERR_INVALIDPARAM;
dkato 5:49a61433290a 929 }
dkato 5:49a61433290a 930 nRet = IsValidPointer(pnMaxUDAngle);
dkato 5:49a61433290a 931 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 932 return STB_ERR_INVALIDPARAM;
dkato 5:49a61433290a 933 }
dkato 5:49a61433290a 934 nRet = IsValidPointer(pnMinLRAngle);
dkato 5:49a61433290a 935 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 936 return STB_ERR_INVALIDPARAM;
dkato 5:49a61433290a 937 }
dkato 5:49a61433290a 938 nRet = IsValidPointer(pnMaxLRAngle);
dkato 5:49a61433290a 939 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 940 return STB_ERR_INVALIDPARAM;
dkato 5:49a61433290a 941 }
dkato 5:49a61433290a 942
dkato 5:49a61433290a 943 if( handle->execFlg->fr == STB_FALSE )
dkato 5:49a61433290a 944 {
dkato 5:49a61433290a 945 return STB_NORMAL;
dkato 5:49a61433290a 946 }
dkato 5:49a61433290a 947 return STB_Fr_GetFaceDirMinMax(handle->hFrHandle, pnMinUDAngle, pnMaxUDAngle, pnMinLRAngle , pnMaxLRAngle);
dkato 5:49a61433290a 948 }
dkato 5:49a61433290a 949
dkato 5:49a61433290a 950 STB_INT32 SetRecognitionFrameCount(STBHANDLE handle, STB_INT32 nFrameCount){
dkato 5:49a61433290a 951 STB_INT32 nRet;
dkato 5:49a61433290a 952 /*NULL check*/
dkato 5:49a61433290a 953 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 954 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 955 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 956 }
dkato 5:49a61433290a 957 if( handle->execFlg->fr == STB_FALSE )
dkato 5:49a61433290a 958 {
dkato 5:49a61433290a 959 return STB_NORMAL;
dkato 5:49a61433290a 960 }
dkato 5:49a61433290a 961 return STB_Fr_SetFrameCount(handle->hFrHandle, nFrameCount);
dkato 5:49a61433290a 962 }
dkato 5:49a61433290a 963 STB_INT32 GetRecognitionFrameCount(STBHANDLE handle, STB_INT32 *pnFrameCount){
dkato 5:49a61433290a 964 STB_INT32 nRet;
dkato 5:49a61433290a 965 /*NULL check*/
dkato 5:49a61433290a 966 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 967 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 968 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 969 }
dkato 5:49a61433290a 970 if( handle->execFlg->fr == STB_FALSE )
dkato 5:49a61433290a 971 {
dkato 5:49a61433290a 972 return STB_NORMAL;
dkato 5:49a61433290a 973 }
dkato 5:49a61433290a 974 return STB_Fr_GetFrameCount(handle->hFrHandle, pnFrameCount);
dkato 5:49a61433290a 975 }
dkato 5:49a61433290a 976
dkato 5:49a61433290a 977 STB_INT32 SetRecognitionRatio (STBHANDLE handle, STB_INT32 nMinRatio){
dkato 5:49a61433290a 978 STB_INT32 nRet;
dkato 5:49a61433290a 979 /*NULL check*/
dkato 5:49a61433290a 980 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 981 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 982 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 983 }
dkato 5:49a61433290a 984 if( handle->execFlg->fr == STB_FALSE )
dkato 5:49a61433290a 985 {
dkato 5:49a61433290a 986 return STB_NORMAL;
dkato 5:49a61433290a 987 }
dkato 5:49a61433290a 988 return STB_Fr_SetMinRatio(handle->hFrHandle, nMinRatio);
dkato 5:49a61433290a 989 }
dkato 5:49a61433290a 990 STB_INT32 GetRecognitionRatio (STBHANDLE handle, STB_INT32 *pnMinRatio){
dkato 5:49a61433290a 991 STB_INT32 nRet;
dkato 5:49a61433290a 992 /*NULL check*/
dkato 5:49a61433290a 993 nRet = IsValidPointer(handle);
dkato 5:49a61433290a 994 if(nRet != STB_NORMAL){
dkato 5:49a61433290a 995 return STB_ERR_NOHANDLE;
dkato 5:49a61433290a 996 }
dkato 5:49a61433290a 997 if( handle->execFlg->fr == STB_FALSE )
dkato 5:49a61433290a 998 {
dkato 5:49a61433290a 999 return STB_NORMAL;
dkato 5:49a61433290a 1000 }
dkato 5:49a61433290a 1001 return STB_Fr_GetMinRatio(handle->hFrHandle, pnMinRatio);
dkato 5:49a61433290a 1002 }