차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
ko:bs2_extracetemplatefaceex [2020/10/22 09:45] kkshin |
ko:bs2_extracetemplatefaceex [2022/06/30 07:21] mark [샘플코드] |
||
---|---|---|---|
줄 4: | 줄 4: | ||
---- | ---- | ||
- | ===== BS2_ExtraceTemplateFaceEx ===== | + | ===== BS2_ExtractTemplateFaceEx ===== |
[+ 2.7.1] ''FaceStation F2'' 얼굴이 포함된 이미지를 가지고, template을 추출합니다. \\ | [+ 2.7.1] ''FaceStation F2'' 얼굴이 포함된 이미지를 가지고, template을 추출합니다. \\ | ||
AOC 카드에 template을 담기 위해 사용합니다. | AOC 카드에 template을 담기 위해 사용합니다. | ||
줄 11: | 줄 11: | ||
#include "BS_API.h" | #include "BS_API.h" | ||
- | int BS2_ExtraceTemplateFaceEx(void* context, uint32_t deviceId, const uint8_t* imageData, uint32_t imageDataLen, bool isWarped, BS2TemplateEx* templateEx); | + | int BS2_ExtractTemplateFaceEx(void* context, uint32_t deviceId, const uint8_t* imageData, uint32_t imageDataLen, bool isWarped, BS2TemplateEx* templateEx); |
</code> | </code> | ||
줄 27: | 줄 27: | ||
성공적으로 수행될 경우 ''BS_SDK_SUCCESS''를 반환하고, 에러가 발생할 경우 상응하는 에러 코드를 반환합니다. | 성공적으로 수행될 경우 ''BS_SDK_SUCCESS''를 반환하고, 에러가 발생할 경우 상응하는 에러 코드를 반환합니다. | ||
\\ | \\ | ||
+ | ==== 샘플코드 ==== | ||
+ | C++ | ||
+ | <code cpp> | ||
+ | int UserControl::extractTemplateFaceEx(BS2_DEVICE_ID id, BS2TemplateEx& templateEx) | ||
+ | { | ||
+ | BS2SimpleDeviceInfoEx deviceInfoEx = { 0, }; | ||
+ | |||
+ | int sdkResult = BS2_GetDeviceInfoEx(context_, id, NULL, &deviceInfoEx); | ||
+ | if (BS_SDK_SUCCESS != sdkResult) | ||
+ | { | ||
+ | TRACE("BS2_GetDeviceInfoEx call failed: %d", sdkResult); | ||
+ | return sdkResult; | ||
+ | } | ||
+ | |||
+ | bool faceExScanSupported = (deviceInfoEx.supported & BS2SimpleDeviceInfoEx::BS2_SUPPORT_FACE_EX_SCAN) == | ||
+ | BS2SimpleDeviceInfoEx::BS2_SUPPORT_FACE_EX_SCAN; | ||
+ | if (faceExScanSupported) | ||
+ | { | ||
+ | try | ||
+ | { | ||
+ | if (Utility::isYes("Do you want to extract faceEx template from image?")) | ||
+ | { | ||
+ | string imagePath = Utility::getInput<string>("Enter the face image path and name:");//C:\88withphone.jpg | ||
+ | uint32_t size = Utility::getResourceSize(imagePath); | ||
+ | shared_ptr<uint8_t> buffer(new uint8_t[size], ArrayDeleter<uint8_t>()); | ||
+ | |||
+ | size_t dataOffset = offsetof(BS2FaceEx, rawImageData); | ||
+ | size_t faceSize = dataOffset + size; | ||
+ | if (Utility::getResourceFromFile(imagePath, buffer, size)) | ||
+ | { | ||
+ | sdkResult = BS2_ExtractTemplateFaceEx(context_, id, buffer.get(), size, 0, &templateEx); | ||
+ | if (BS_SDK_SUCCESS != sdkResult) | ||
+ | { | ||
+ | TRACE("BS2_ExtractTemplateFaceEx call failed: %d", sdkResult); | ||
+ | return sdkResult; | ||
+ | } | ||
+ | print(templateEx); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | catch (const std::exception&) | ||
+ | { | ||
+ | |||
+ | } | ||
+ | } | ||
+ | |||
+ | return sdkResult; | ||
+ | } | ||
+ | BS2_ReleaseObject(uidObj); | ||
+ | </code> | ||