기억저장고

Unity PC 에서 Face Filter 만드는 법 본문

Unity

Unity PC 에서 Face Filter 만드는 법

기억해조 2022. 10. 28. 17:53

나는 OpenCV 를 이용해 얼굴의 특징점을 찾아낸후, 
특징점을 이용해 눈코입위치에 이미지를 올리는방식으로 개발할꺼다.

1. 준비물
- OpenCV for unity (90$)
- Dlib FaceLandmark Detector (40$)

Unity(C#)에서는 OpenCV라이브러리를 사용할 수 없으므로
에셋스토어에서 OpenCV를 사용할 수 있게 해놓은 에셋을 구매해야한다. 

2. 만드는방법 이전에..
두개의 에셋을 모두 받은 후
DlibFaceLandmarkDetectorWithOpenCVExample-Texture2DToMatExample.scene을 열고 실행시켜보면 
OpenCV가 얼굴의 특징점을 찾아낸걸 볼 수 잇다. 
얼굴에 있는 특징점은 Face Landmark로 검색하면 자세히 알아볼 수 있다. 



3. 이미지위에 토끼 귀 올리는방법

3-0. 파악
1. Texture2DToMatExample.scene  Open
2. Quad 오브젝트 클릭 후 Texture2DToMatExample.cs Open
3. Run()함수 내부의 points가 중요하다. 

List<Vector2> points = faceLandmarkDetector.DetectLandmark(detectResult[i].rect);


poinst리스트에 들어있는 값이 사진에서 찾아낸 특징점들이다. 

 

그리고  찾아낸 points의 값을 이용해서 UI를 배치하면된다.

 

얼굴 특징점 index값 (OpenCV는 이마라인 index는 없음)

 

점이 저장되는 순서는 위에있는 이미지 순서 똑같이 저장된다.

다만,, OpenCV는 이마라인 index가 없다 68~74번까지는 없어서 

 

귀를 붙일때 0~16을 너비로 생각하고 위치는 27번에서 얼굴 길이계산 후 position올려야함..

 

*

두점사이의 길이를 찾아서 크기를 구하거나,, 

두점 사이의 중심점을 찾아서 위치시킬 Position을 정하거나,,

 

 

 

*OpenCV 예시 - 이대로 따라하는건 아니고, 어떤방식으로 계산하는지만 보면됨..

https://rajathithanrajasekar.medium.com/opencv-series-8-virtual-makeup-augment-sunglasses-on-eyes-74147d85ff76

 

OpenCV Series — 8 — Virtual Makeup — Augment Sunglasses on eyes

In this post, we are going to see how we can use Dlib’s face detection landmarks to augment the sunglasses to a person’s image. In my…

rajathithanrajasekar.medium.com

 

List<Vector2> points 위치
예제 씬 플레이 사진
예제씬에 필터 적용 사진
웹캠으로 필터 적용한 사진(내얼굴은뻄)



*주의할점

List<Vector2> points에 들어오는 좌표는 OpenCV좌표로 들어온다.

openCV에서 사용하는 좌표계

 

Comments