이미지 Overlay

be1le·2022년 3월 5일
9

Open-CV

목록 보기
4/11

오늘은 이미지 합성기법중 하나인 Overlay기법을 블로깅 할 계획이다. 우선 Overlay기법을 사용하기전 이미지의 투명도에 대한 개념을 정리하고 가자.

우리가 기존에 알고있던 이미지는

이러한 형태로 3차원 형태였다. 하지만 확장자의 이름이 png인 투명도가 추가된 채널구조는 h,w,c+알파채널로 이루어 진다. 알파채널은 투명도를 나타내기 위한 채널이다.

배경 이미지와 overlay 이미지 로드하기


우리는 cv2에서 이미지를 로드할때는 항상 imread('파일명') 이렇게 로드했지만. png즉 투명도채널이 포함된 이미지라면 꼭 cv2.IMREAD_UNCHANGED 를 명시해 주어야 투명도가 포함된 채로 이미지가 로드된다. 꼭 잊지말자! overlay-img에는 IMREAD_UNCHANGED를 명시해 주어야 한다는걸!

overlay img resizing


우리가 원하는 size로 resizing이 끝났다면, 이젠 배경이미지에 overlay-img를 올리기만 하면 된다.!

overlay img 적용하기


이제는 이미지가 들어갈 좌표만 입력하면 overlay기법이 적용된다.


이렇게 하고나면


이렇게 완성할 수 있다!

전체 코드

글을 마치며

사실코드보다 주석이 긴경우가 많은것 같다는 생각이 든다.
코드한줄을 모두 이해하며 나아가는 것은 상당히 어려운 일이라고 생각한다. 하지만 "대충 이런내용 아닐까?" 혹은 "뭐 이런 기능을 하는 코드" 라고생각을 하고 넘기기에는 결국 본인이 적어 내려가는 코드조차도 "이렇게 해왔으니까" 라는 이유로 적어 내려가면 결국 본인의 코드가 잘못 되었을때 어느부분을 어떠한 이유로 고쳐야하는지 모르는체 눈감고 디버깅을 하게 될 것이다. 이건 프로그래밍을 경험해본 사람이라면 누구나 공감하는 이야기일 것이라고 생각한다. 눈감고 디버깅을 한다는게 "대충 여기 고치면 되지 않을까?" 라는 생각으로 디버깅을 임하는 것인데. 사실 내가 계속 그래왔던것 같다. 정작 내가쓴 코드에도 확신을 갖지못하고, 내가 어떠한 에러가 나왔는데 어떠한 이유로 나왔는지도 모르는체로 구글링 하며 디버깅을 하는건 절대 좋은 습관이라고 생각하지 않는다. 그래서 내가쓰는 혹은 따라적는 모든 코드에 대한 의문을 갖는 습관을 갖기로 했다. 내가적은 코드한줄을 그누구에게도 설명할 수 있어야 에러를 만났을 때도 더 좋은 코드를 쓰는 배움을 얻어갈 수 있다고 생각한다. 실무에서 주석을 저렇게까지 달필요는 절대 없겠지만. 지금의 이런 나를위한 주석 습관은 오히려 나에게 독이아닌 득이 될 것이라고 생각한다! 긴글을 읽어주심에 감사합니다 ^~^

profile
그저 그런 개발자가 되지 않겠습니다.

0개의 댓글