차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 다음 판 | 이전 판 | ||
|
ko:bs2_getuserdatasfaceex [2020/08/21 13:27] kkshin 만듦 |
ko:bs2_getuserdatasfaceex [2024/05/28 17:18] (현재) kkshin |
||
|---|---|---|---|
| 줄 5: | 줄 5: | ||
| ===== BS2_GetUserDatasFaceEx ===== | ===== BS2_GetUserDatasFaceEx ===== | ||
| - | [+ V2.7.1] 사용자 식별자에 해당하는 사용자 정보를 가져옵니다. \\ | + | [+ 2.7.1] 사용자 식별자에 해당하는 사용자 정보를 가져옵니다. \\ |
| - | 이때 userMask를 통하여 사용자 정보의 일부를 선별적으로 가져올 수 있습니다. 이 함수는 FaceStation F2 장치 지원을 포함합니다. | + | 이때 userMask를 통하여 사용자 정보의 일부를 선별적으로 가져올 수 있습니다. \\ |
| + | 이 함수는 Visual Face 인증 수단을 지원합니다. | ||
| \\ | \\ | ||
| ==== 함수 ==== | ==== 함수 ==== | ||
| 줄 39: | 줄 40: | ||
| |0x0200 |작업코드 | | |0x0200 |작업코드 | | ||
| |0x0400 |개인메시지 | | |0x0400 |개인메시지 | | ||
| - | |0x0800 |얼굴 ''(FaceStation F2)'' | | + | |0x0800 |얼굴 ''(Visual Face 지원)'' | |
| - | |0x1000 |사용자설정 ''(FaceStation F2)'' | | + | |0x1000 |사용자설정 ''(Visual Face 지원)'' | |
| |0xFFFF |사용자 정보 전체 | | |0xFFFF |사용자 정보 전체 | | ||
| </WRAP> | </WRAP> | ||
| 줄 47: | 줄 48: | ||
| 성공적으로 수행될 경우 ''BS_SDK_SUCCESS''를 반환하고, 에러가 발생할 경우 상응하는 에러 코드를 반환합니다. | 성공적으로 수행될 경우 ''BS_SDK_SUCCESS''를 반환하고, 에러가 발생할 경우 상응하는 에러 코드를 반환합니다. | ||
| \\ | \\ | ||
| + | ==== 샘플코드 ==== | ||
| + | C++ | ||
| + | <code cpp> | ||
| + | |||
| + | const int MAX_USER_PAGE_COUNT = 2048; | ||
| + | vector<BS2UserFaceExBlob> userBlob(MAX_USER_PAGE_COUNT); | ||
| + | BS2_USER_MASK userMask = BS2_USER_MASK_ALL; | ||
| + | |||
| + | for (uint32_t idx = 0; idx < numUID; idx += MAX_USER_PAGE_COUNT) | ||
| + | { | ||
| + | uint32_t availUserCount = min<uint32_t>(MAX_USER_PAGE_COUNT, numUID - idx); | ||
| + | |||
| + | int sdkResult = BS2_GetUserDatasFaceEx(context_, id, uidObj + BS2_USER_ID_SIZE * idx, availUserCount, &userBlob[0], userMask); | ||
| + | if (BS_SDK_SUCCESS != sdkResult) | ||
| + | { | ||
| + | TRACE("BS2_GetUserDatas call failed: %d", sdkResult); | ||
| + | if (uidObj) | ||
| + | BS2_ReleaseObject(uidObj); | ||
| + | return sdkResult; | ||
| + | } | ||
| + | |||
| + | for (uint32_t pageIdx = 0; pageIdx < availUserCount; pageIdx++) | ||
| + | { | ||
| + | print(userBlob[pageIdx]); | ||
| + | |||
| + | if (0 < userBlob[pageIdx].user.numCards && userBlob[pageIdx].cardObjs) | ||
| + | BS2_ReleaseObject(userBlob[pageIdx].cardObjs); | ||
| + | if (0 < userBlob[pageIdx].user.numFingers && userBlob[pageIdx].fingerObjs) | ||
| + | BS2_ReleaseObject(userBlob[pageIdx].fingerObjs); | ||
| + | if (0 < userBlob[pageIdx].user.numFaces && userBlob[pageIdx].faceExObjs) | ||
| + | BS2_ReleaseObject(userBlob[pageIdx].faceExObjs); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </code> | ||
| + | |||
| + | |||
| + | C# | ||
| + | <code cpp> | ||
| + | BS2UserFaceExBlob[] userBlobs = new BS2UserFaceExBlob[numUser]; | ||
| + | BS2ErrorCode result = (BS2ErrorCode)API.BS2_GetUserDatasFaceEx(sdkContext, deviceID, uid, numUser, userBlobs, userMask); | ||
| + | |||
| + | if (result == BS2ErrorCode.BS_SDK_SUCCESS) | ||
| + | { | ||
| + | for (UInt32 index = 0; index < numUser; index++) | ||
| + | { | ||
| + | print(userBlobs[index]); | ||
| + | |||
| + | if (userBlobs[index].cardObjs != IntPtr.Zero) | ||
| + | API.BS2_ReleaseObject(userBlobs[index].cardObjs); | ||
| + | if (userBlobs[index].fingerObjs != IntPtr.Zero) | ||
| + | API.BS2_ReleaseObject(userBlobs[index].fingerObjs); | ||
| + | if (userBlobs[index].faceObjs != IntPtr.Zero) | ||
| + | API.BS2_ReleaseObject(userBlobs[index].faceObjs); | ||
| + | if (userBlobs[index].faceExObjs != IntPtr.Zero) | ||
| + | API.BS2_ReleaseObject(userBlobs[index].faceExObjs); | ||
| + | } | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | |||
| + | |||
| ==== 함께 보기 ==== | ==== 함께 보기 ==== | ||
| [[BS2_EnrollUserFaceEx]]\\ | [[BS2_EnrollUserFaceEx]]\\ | ||