[개발] OpenCV 를 이용한 얼굴 인식 기능 개발

안녕하세요 @realmankwon입니다.

얼마전 자동문을 제어하는 안드로이드 앱을 개발하였습니다.
자동문에는 라즈베리파이가 연결되어 있고 api 호출을 통해서 안드로이드 앱은 라즈베리파이와 통신을 하게 되어 있습니다.

요즘에는 비접촉 온도 센서를 통해서 온도를 기록하고 정상 온도일때만 문이 열리도록 하는 시스템을 개발 중입니다.
덕분에 다시 늘 하던 언어인 C#으로 돌아오긴 했지만 카메라를 통해서 얼굴을 인식하는 부분 때문에 OpenCV라는 생소한 라이브러리를 공부 중에 있습니다.

역시나 모르는 것이 나오면 구글링.
다음의 자료를 찾았습니다.

https://076923.github.io/posts/C-opencv-3/

바로 개발에 착수 하라는대로만 하니 바로 노트북의 웹캠으로 저를 볼 수 있었습니다.
위의 소스는 거울처럼 보이지 않아서 아래의 링크에서 좌우 대칭이 되도록 수정을 했습니다.

https://076923.github.io//posts/Python-opencv-5/

그리고 다음으로 얼굴인식 후에 동그라미를 표시하는 부분도 찾아서 개발해 보았습니다.

https://076923.github.io/posts/C-opencv-29/

마지막 얼굴 검출은 원본 사진을 복사하고 복사한 사진에 얼굴이 검출되면 동그라미가 그려지게 되어 있습니다.
그래서 제일 처음 소스와 잘 믹스해 보았습니다.

마지막 소스의 FaceDetection() 함수를 첫번째 소스에 추가하고 timer1_Tick 함수에 위의 함수를 호출시키도록 하였습니다.
화면에 보여지는 영상에 얼굴검출한 동그라미를 그리게 한 것을 리턴받아서 다시 표시하도록 하였습니다.

  • 수정전
private void timer1_Tick(object sender, EventArgs e)
{
    src = capture.QueryFrame();
    pictureBoxIpl1.ImageIpl = src;
}
  • 수정후
private void timer1_Tick(object sender, EventArgs e)
{
    src = capture.QueryFrame();
    // 얼굴 검출 함수 호출
    src = FaceDetection(src);
    pictureBoxIpl1.ImageIpl = src;
}

수정 후에 인식이 아주 잘 되는군요 ^^
이제 남은 것은 휴대폰으로 NFC 인식 후에 온도 체크를 할 수 있도록 하는 로직을 추가하는 것입니다.

어쩌다 보니 매일매일 새로운 것을 개발하게 되는군요.
OpenCV를 이용해서 개발하는 분들에게 도움이 되길 바랍니다. ^^

Sort:  

[US$38.00](▼16%)xiaomi 샤오미 선풍기/ 17pin무선선풍기/한국 6개월 무상AS/한국형 어탭터

WWW.QOO10.COM

@realmankwon transfered 24 KRWP to @krwp.burn. voting percent : 87.47%, voting power : 82.97%, steem power : 1886857.79, STU KRW : 1200.
@realmankwon staking status : 7800 KRWP
@realmankwon limit for KRWP voting service : 23.4 KRWP (rate : 0.003)
What you sent : 24 KRWP
Refund balance : 0.6 KRWP [46136904 - 55b7a1f54e2e211ef5e28ca0d6cf1cdc7f6b1c2f]

Coin Marketplace

STEEM 0.29
TRX 0.12
JST 0.032
BTC 63376.37
ETH 3089.73
USDT 1.00
SBD 3.82