wpf2019. 2. 26. 16:56

얼굴 인식 2번쨰

Face API를 항상 호출하면 1분에 20번(무료 버전 기준) 호출 제한을 넘기때문에

일단 openCV 에서 얼굴을 최대한 감지한후 호출을 해야 호출 제한에 어느정도 자유롭다.

일단 openCVSharp을 설치하면

CascadeClassifier class의 DetactMultiScale을 이용해서 사람 얼굴을 감지할수 있다.

private readonly CascadeClassifier _localFaceDetector = new CascadeClassifier();
_localFaceDetector.Load("Data/haarcascade_frontalface_alt.xml");

_grabber.NewFrameProvided += (s, e) =>
{
var rects = _localFaceDetector.DetectMultiScale(e.Frame.Image, 1.3, 1, 0, new OpenCvSharp.Size(200, 200));
.
.
//Face API를 이용해서 얼굴 찾기

이런식으로 1차적으로 openCV 얼굴 검출 2차 Face API를 이용해서 얼굴 찾기 하면 된다.

프레임별로 얼굴을 찾는 부분을 호출 하기 때문에 2초 정도 안에는 다시 FaceAPI를 호출하지 못하도록 구현해야한다.


DetectMultiScale을 이용해서 검출할수 있는 최대 인원 및 최소 사이즈를 설정할수 있다. 샘플에서는 얼굴 크기가 200 이상인사람만 찾도록 구현했다.

샘플은 웹캠이 구동되고 얼굴을 비추면 첨보는 사람면 등록을 , 등록된 사람이면 userData의 이름 및 성별등등을 출력해준다. Face API는 최대한 호출되지 않도록 openCV에서 얼굴이 완전히 검출 되었을때만 사용했다.


FaceApiTest2.zip













Posted by 동동(이재동)
wpf2019. 2. 25. 15:34

  Face api 1.0 


https://westus.dev.cognitive.microsoft.com/docs/services/563879b61984550e40cbbe8d/operations/563879b61984550f30395250

face api를 사용하기 위해선 face api를 사용하기 위한 key와 End Point를 받아야 한다.

end point는 이런식으로 되어 있다.
https://koreacentral.api.cognitive.microsoft.com/face/v1.0/

나머지는 api 사용법대로 사용 하면 된다.


openCV를 이용해서 카메라를 띄우고 FrameGrabber를 이용해서 해당이미지 사진을 올린다.

원리는 이렇다

FaceDetect를 이용해서 사람을 찾고 찾을경우 Find similer를 이용하여 FaceList에서 검색한다.

만약 없을경우 add Face를 이용하여 사람을 등록한다. 그룹을 이용해서 할수도 있다.

나머진 샘플을 이용해보자


FaceApiTest.zip


Posted by 동동(이재동)