안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.
코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.
업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART)나 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

1. 컴퓨터 비전 기초 of 기초
컴퓨터 비전에 대해서 모두 다루기엔 너무 방대한 학문이기 때문에, OpenCV를 다루기 위해서 필요한 지극히 기초적인 내용만 다루겠습니다.
추후에 OpenCV를 다루면서 필요한 이론이 있으면 그때 그때 추가적으로 공부하도록 하겠습니다.
1) 컴퓨터 비전(Computer vision)이란?
• 컴퓨터를 이용하여 정지영상 또는 동영상으로부터 의미있는 정보를 추출하는 방법을 연구하는 학문
• 즉, 사람이 눈으로 사물을 보고 인지하는 작업을 컴퓨터가 수행
2) 영상(image)이란?
• 픽셀(pixel)이 바둑판 모양의 격자에 나열되어 있는 형태 (2차원행렬)
• 픽셀: 영상의 기본 단위, picture element, 화소
3) 그레이스케일(grayscale) 영상


흑백 사진이 바로 그레이스케일 영상입니다. 색상 정보(R,G,B) 없이 오직 밝기 정보만 가지고 있는 영상이죠. 참고로 컴퓨터 비전에서는 사진도 영상이라고 부른답니다.
그레이스케일 영상은 픽셀 하나를 0~255 범위의 정수로 표현합니다. (0이 검정, 255가 흰색)
4) 트루컬러(truecolor) 영상


일반적인 컬러 사진으로 R, G, B 색 성분의 크기를 각각 0 ~ 255 범위의 정수로 표현한 영상입니다
2. OpenCV 기초
1) 설치하기
# 기본 모듈 패키지
pip install opencv-python
# 전체 패키지(주 모듈과 contrib/추가 모듈 모두 포함)
pip install opencv-contrib-python
2) 라이브러리 불러오기
import cv2
3) 사진 불러오기
cv2.imread( ) 함수는 인자를 2개 받는데, 첫번째는 가져오고자 하는 파일의 경로, 두번째는 파일을 어떤 컬러 옵션으로 가져올 것인지에 대한 내용입니다. 이때, 이미지(img)는 numpy.ndarray 형식으로 저장됩니다.
아래의 코드는 현재 작업경로와 이미지 파일이 존재할 때만 사용할 수 있다는 점 주의해주세요.
img = cv2.imread('파일명.확장자', cv2.IMREAD_COLOR)
<옵션>
cv2.IMREAD_COLOR (기본값)
cv2.IMREAD_GRAYSCALE
cv2.IMREAD_UNCHANGED
4) 사진 출력하기
위에서 사진을 불러온 것은 단지 img라는 이름의 변수에 저장해둔 상태입니다. 사진을 창에 띄워서 출력하기 위해서는 cv.imshow( ) 함수를 사용해줍니다.
cv2.imshow('출력할 창 이름', img)
좀 더 제대로 하면 미리 창을 만들어주고, 창 옵션도 설정하고 해줄 수 있지만 생략하도록 하겠습니다. 안해줘도 출력은 되고 처음부터 많은 걸 배우면 혼란스럽기만 하니깐요.
5) 키보드 입력 대기
위에서 사진을 출력하면 순식간에 사진이 떴다가 사라집니다. 그래서 키보드 입력이 들어올 때 까지 사진을 띄워놓을 수 있도록 cv2.waitKey( ) 함수를 사용해줍니다.
cv2.waitKey()
함수의 인자로는 밀리세컨드(ms)가 들어가는데, 해당 시간동안 기다려 주겠다는 의미이며, 미입력시 무한히 기다립니다.
만약 특정키가 눌렸을 때만 반응하고 싶다면 아래와 같이 코딩해주시면 됩니다.
# 27(ESC), 13(ENTER), '알파벳'도 가능
while True:
if cv2.waitKey() == ord(27):
break
6) 창 닫기
위에서 키를 누른 후, 창이 닫히는 것이 목적이라면 아래의 코드를 넣어주어야 합니다.
특별한 목적이 없는 한, 그냥 심플하게 모두 닫는게 좋겠습니다.
# 창을 모두 닫고 싶을 때
cv2.destroyAllWindows()
# 원하는 창만 닫고 싶을 때
cv2.destroyWindow('특정 창 이름')
<전체 코드>
import cv2
img = cv2.imread('ch01/cat.bmp', cv2.IMREAD_GRAYSCALE)
cv2.imshow('image', img)
cv2.waitKey()
cv2.destroyAllWindows()
오늘 준비한 내용은 여기까지입니다.
감사합니다.
<참고 자료>
패스트 캠퍼스 강의_OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online