OpenCV에서 투명한 부분이 포함되어 있는 이미지(transparent image)를 다른 이미지 또는 영상에 오버레이하는 방법을 찾아봤습니다.
http://jepsonsblog.blogspot.kr/2012/10/overlay-transparent-image-in-opencv.html 에서 소개하고 있는 overlayImage 함수를 사용하면 간단히 해결됩니다.
이걸 가지고 뭐할 수 있을 까 고민하다가 사람 얼굴에 안경을 오버레이 해보았습니다.
원본 이미지로 다음 두 장의 이미지를 사용했습니다.
각각 다음 링크에서 다운로드 가능합니다.
https://pixabay.com/ko/초상화-여자-얼굴-여성-여자-얼굴-아름-다운-여자-얼굴-2159177/
https://pixabay.com/ko/안경-액자-종범-렌즈-광섬유-사양-광학-311831/
우선 수작업으로 눈의 위치와 안경의 크기를 조절하여 결과를 얻었습니다.
조금만 고민해보면 자동으로 눈 위치를 찾아서 얼굴 사이즈에 맞게 안경 이미지를 줄여주어 출력해줄 수 있을 거 같습니다.
OpenCV에서 제공하는 얼굴 인식 코드를 사용하면 될 듯합니다.
사용한 전체 코드입니다.
#include <opencv2/core.hpp> |
참고
https://docs.opencv.org/3.3.1/db/deb/tutorial_display_image.html
http://jepsonsblog.blogspot.kr/2012/10/overlay-transparent-image-in-opencv.html
'OpenCV > OpenCV 강좌' 카테고리의 다른 글
OpenCV 사용해서 실시간으로 도형 검출하기(shape detection) 1 / 2 - 이미지에서 검출 (41) | 2018.06.30 |
---|---|
OpenCV를 이용하여 특정색 (빨간색) 검출 (95) | 2018.06.10 |
웹캠으로부터 입력된 영상을 일련번호 붙인 이미지 파일로 저장하는 예제 (52) | 2017.06.29 |
OpenCV 3.1 예제 - OpenCV를 pthread, mutex와 같이 사용하기 (2) | 2016.11.25 |
영상처리 강좌 3 - 컨볼루션(Convolution)과 스무딩(Smoothing), 샤프닝(Sharpening) (2) | 2016.09.24 |