문서의 이전 판입니다!


Face API > BS2_ExtractTemplateFaceEx


[+ 2.7.1] FaceStation F2 얼굴이 포함된 이미지를 가지고, template을 추출합니다.
AOC 카드에 template을 담기 위해 사용합니다.

함수

#include "BS_API.h"
 
int BS2_ExtractTemplateFaceEx(void* context, uint32_t deviceId, const uint8_t* imageData, uint32_t imageDataLen, bool isWarped, BS2TemplateEx* templateEx);

파라미터

  • [In] context : Context
  • [In] deviceId : 장치 식별자
  • [In] imageData : 얼굴이 포함된 이미지 정보를 가리키는 포인터
  • [In] imageDataLen : imageData의 길이
  • [In] isWarped : warp된 이미지인지의 여부
  • [Out] templateEx : imageData가 가리키는 이미지로 추출된 얼굴 template

반환값

성공적으로 수행될 경우 BS_SDK_SUCCESS를 반환하고, 에러가 발생할 경우 상응하는 에러 코드를 반환합니다.

샘플코드

C++

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);