개발 · 프로그래밍

/

개발 · 프로그래밍 기타

파이썬 무료 강의 (활용편6) - 이미지 처리 (OpenCV)

파이썬을 활용하여 컴퓨터 비전 및 이미지 처리의 최강자인 OpenCV 라이브러리의 사용법을 익히고, 다양한 재미있는 프로젝트를 통해 실생활에 이미지 처리를 응용하는 방법을 공부합니다.

(5.0) 수강평 51개

수강생 3,031명

Thumbnail

초급자를 위해 준비한
[개발 · 프로그래밍, OpenCV] 강의입니다.

이런 걸
배워요!

  • 이미지 처리에 빠질 수 없는 OpenCV 의 사용법

  • 반자동 문서 스캐너 개발 (미니 프로젝트 #1)

  • 사진에서 카드 검출 및 분류하는 프로그램 개발 (미니 프로젝트 #2)

  • 얼굴 인식을 통한 캐릭터 씌우기 (실전 프로젝트)

다양하고 재밌는 프로젝트를 통해 배우는
파이썬 활용 이미지 처리 강의!

📢 강의 수강 전 확인해주세요.

  • 강의 속 개발환경은 Jupyter Notebook, Python 3.x입니다.

일상 속에서 매일 만나는
이미지 처리

 

불과 얼마 전까지만 해도 식당이나 카페 등 어떤 장소에 방문하실 때 QR 코드를 인식해야 했었는데요. QR 체크인을 한 번이라도 해보셨다면 여러분은 벌써 이미지 처리를 경험하신 겁니다. 스마트폰 화면에 떠 있는 QR 코드를 매장 입구에 비치된 기기에 적당한 거리에서 갖다 대면 자동으로 영역을 찾아서 QR 을 인식하게 되지요.

(출처 : https://www.emkat.com/products/emkat-temperature-screening-kiosk/)

체온 측정도 한 번쯤 해보셨을 텐데요. 사람 키 높이에 태블릿을 설치하여 거기에 사람 얼굴을 대면 자동으로 얼굴 영역을 검출하고 체온을 측정하여 정상 여부를 알려주기도 합니다.

이처럼, 이미지 처리(컴퓨터 비전)란 이미지 데이터로부터 유용한 정보를 얻기 위해 이미지를 조작하고 분석하는 과정을 의미합니다. 카메라로 인식된 이미지 중에서 QR 코드를, 또는 사람 얼굴을 자동으로 검출하는 것 외에도 정말 많은 분야에서 활용되고 있어요.

얼굴 필터, 이런 거 다들 한 번씩은 해보셨죠?

(출처 : https://play.google.com/store/apps/details?id=com.campmobile.snow&hl=ko )

그 외에도 몇 개 생각해 보자면,
뉴스에 내보낼 인터뷰 동영상에서 사람 얼굴 찾아서 그 부분만 모자이크 한다든지,
차량 블랙박스 동영상을 올리려는데 다른 차의 번호판을 자동으로 찾아서 모자이크 하거나,
아, 번호판이라면 유료 주차장 들어가고 나올 때도 자동으로 인식을 하지요?

사용자에게 어울리는 옷을 추천한다든지,
자동으로 몸 부분에 가상으로 옷을 입혀본다든지,
잘생겼나 못생겼나 확인하는 재미난 콘텐츠도.. 닮은꼴 연예인이라든지,
손동작을 인식해서 마이너리티 리포트에 나오는 슉슉 하는 걸 만든다든지,
보안 검색대를 통과할 때 소지하면 안 되는 물품을 자동으로 인식한다든지 등..

OpenCV

이미지 처리는 OpenCV의 도움을 받아서 진행합니다.
OpenCV는 실시간 이미지 처리를 위한 오픈소스 라이브러리인데, 아주 그냥 뭐 최고입니다 ㅎㅎ


강의에서는 OpenCV를 이용해서 무엇을 할 수 있는지 다양한 예제를 통해 하나씩 알아볼게요.

#1 예제

원본 이미지를 다양한 방법으로 변형시켜볼게요.

원본 이미지

돌리기

자르기

 

크기 줄이기

흑백 효과

흐릿하게 하기

너무 쉬워 보이나요? 😀
조금 더 깊게 들어가 보겠습니다.

#2 예제

책에 있는 모든 글자 부분을 얻어오려고 합니다.

원본 이미지

책을 읽는 사진이 한 장 있습니다.

grayscale 변환

먼저 이미지를 단순하게 하기 위해 grayscale로 변환을 해줍니다. 컬러보다는 흑백이 훨씬 아무래도 더 단순하겠죠?

 

threshold 함수

빨갛게 칠해진 영역의 글자를 얻어오기 위해서 OpenCV의 threshold란 함수를 이용할 수 있어요. 하지만 딱 원하는 부분이 잘 보이지가 않네요. 이건 햇빛 그림자로 인해 밝은 부분과 어두운 부분이 공존해서 그렇습니다. 이미지 전체를 기준으로 적용하다 보니 그런 건데요.

adaptive threshold 적용

이럴 때는 adaptive threshold란 것을 적용하면, 어때요, 훨씬 낫죠? 이렇게 하면 이미지를 작은 영역으로 나누어서 처리하다 보니 햇빛(또는 조명 등)에 따른 음영 차이가 있어도 책에 있는 글자 부분들을 선명하게 찾아낼 수 있어요!

#3 예제

이미지 처리에는 침식, 팽창이란 것도 있는데 이들을 적당히 조합한 열림 & 닫힘 연산이란 것도 쉬운 예제와 함께 공부합니다. 각각 어떤 식으로 동작하는지 자세한 설명은 물론, 어떤 경우에 써야 하는지도 쉽게 파악이 가능할 거예요.

열림 연산

 

닫힘 연산

음... 이 사진만 봐서는 잘 모르실 수도 있겠네요😊
이런 것도 해볼 수 있어요!

#4 예제

이미지 내에서 어떤 영역을 찾아서 변형을 주면 이렇게 사다리꼴 형태의 이미지로부터 직사각형 형태로 이미지를 펼칠 수도 있고요.

#5 예제

원하는 영역을 선택해서 추출해 보는, 반자동 문서 스캐너도 만들 수 있습니다.
예제에서는 카드 이미지로 해볼게요.

조금 더 나아가면 윤곽선 검출이란 것을 통해서 이미지 내에서 자동으로 카드 또는 문서가 있는 영역을 검출해서 추출해 볼 수도 있어요.

강의에서 다루지는 않지만 글자 영역을 검출하여 읽어내면 어떤 종류의 카드가 있는지도 쉽게 확인이 가능하지요. 명함 관리 프로그램으로 응용한다면 글자를 읽어내서 이름 / 전화번호 / 이메일 주소 등을 분류해서 저장도 할 수 있겠고요. 비대면 계좌 개설 서비스를 제공하는 입장이라 하면 신분증으로부터 원하는 영역의 글자를 읽어와서 자동으로 입력항목을 채우고, 또 주민등록번호 부분은 알아서 모자이크 또는 가리기 처리를 해볼 수도 있겠네요.

#6 예제

이러한 이미지 처리 기법들을 통해서 사람 얼굴을 찾아서 재미난 뭔가를 하는 게 빠질 수 없겠죠?
프로젝트에서는 mediapipe라는 패키지의 도움을 받을 건데요. (https://google.github.io/mediapipe/)

홈페이지에 소개된 것처럼 얼굴 검출뿐 아니라 사물 인식, 모션 인식 등 굉장히 다양하고 재미있는 작업들을 해볼 수 있답니다.

우리는 그중에 가장 처음에 소개되는 얼굴 검출의 예제 코드를 응용해 볼 텐데요. 이걸 이용하면 이미지 내에서 사람 얼굴을 찾아서 눈, 코, 입, 귀의 위치를 단 몇 줄의 코드로 찾아낼 수 있고 거기에 도형도 그려볼 수 있어요.

도형 말고 동물 이미지를 한번 씌워볼까요? 똥손으로 그린 귀와 코입니다.

 

이걸 씌워보니

이렇게 되네요🤣

이제 다 되었습니다. 진짜 그럴듯한 캐릭터 이미지를 하나 구해와서 덮어 씌워보면

짠!! 이 아저씨 얼굴에 귀여운 캐릭터 이미지를 씌워봤습니다.
사실 이 과정에서 투명도 처리를 위한 작업이 조금 있는데, 강의 뒷부분에서 아주 자세히 설명드리니 걱정하지 않으셔도 됩니다.

여기까지 공부하고 나면 여러분 머릿속에는 온갖 창의적인 아이디어가 떠오르면서 당장 적용하고 싶은 욕구가 생길 수도 있습니다. 물론 쉽게 구현도 해볼 수 있을 거고요. 개구쟁이처럼 장난스러운 프로그램도 만들 수 있을 거고요 ✨

이 모든 내용이 약 5시간 40분이면 충분합니다.

그럼, 지금 바로 시작해 볼까요?

 

Designed by Freepik
 https://www.freepik.com

Images, Videos by Pixabay, Pexels
https://www.pixabay.com
https://www.pexels.com

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 파이썬 기본을 공부하신 분

  • 파이썬을 실생활에 활용해보고 싶은 분

  • 다양한 이미지처리 기법을 통해 나만의 프로젝트를 완성하실 분

유튜브에서 코딩 교육 채널을 운영하고 있는 나도코딩입니다.
누구나 쉽고 재미있게 코딩을 공부하실 수 있도록 친절한 설명과 쉬운 예제로 강의합니다.
코딩, 함께 하실래요? 😊

🧡 유튜브 나도코딩
🎁 코딩 자율학습 나도코딩의 파이썬 입문
📚 코딩 자율학습 나도코딩의 C 언어 입문

커리큘럼

전체

48개 ∙ (5시간 40분)

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!