OpenCV 기초: 환경설정부터 이미지 입출력까지

발라·2025년 6월 11일

AI 이해의 첫걸음

목록 보기
14/21
post-thumbnail

안녕하세요! 오늘은 저처럼 OpenCV를 처음 접하는 사람들을 위해
설치부터 이미지 읽기·출력, 그리고 옵션까지 차근차근 정리해볼게요!


인공지능의 세부 영역

인공지능은 크게 4가지 세부 영역으로 나눌 수 있어요!

  1. 시각지능: 영상, 사진을 보고 분석하는 기술
  2. 언어지능: 텍스트, 문장을 분석하는 기술
  3. 사물지능: 센서를 이용하거나 로봇을 제어할 때 사용하는 기술
  4. 후각지능: 냄새를 분석하는 기술

시각지능: 인공지능의 눈

눈으로 감지할 수 있는 데이터를 주로 활용하여 인공지능을 구현하는 기술

쉬운 예시
1) 스마트폰의 얼굴 인식
2) 사진 속 객체 탐지/분류
3) 유튜브 자막 자동 생성 (시각지능 + 언어지능)

시각지능 주요 기능

1) 객체 탐지: 검은색 티셔츠와 안경을 동시에 찾음
2) 이미지 분류: 이 사진이 주황색 사진인지, 흰색 사진인지 분류
3) 세분화: 이미지에서 대상의 윤곽을 픽셀 단위로 정확하게 나눔
4) 얼굴/홍채/정맥 인식
5) OCR (광학 문자 인식)

시각지능 작동 원리 (기초편)

컴퓨터는 당연한 소리이지만 사람이 아니기에 사진·영상을 보는 방식은 사람과 달라요.
사진은 사람처럼 시신경을 이용하여 빛의 파장 등을 통하여 읽는 것이 아닌 수많은 숫자(픽셀 값)로 읽고 판단하고 계산하는 방식을 사용해요.

시각지능의 어려운 점

1) 날씨/조명/각도에 따라 인식 오류 발생
2) 사생활 이슈: 얼굴 인식, 감시 문제
3) 많은 데이터 필요
4) AI 오판 가능성

시각지능 구현을 위한 대표 기술

1) OpenCV - 오픈소스로 제공되는 Computer Vision 라이브러리
2) CNN - 합성곱 신경망
3) 객체 탐지 모델 (YOLO 등)


1. OpenCV란?

  • OpenCV(Open Source Computer Vision Library)
    • 컴퓨터 비전과 머신러닝을 위한 오픈소스 라이브러리
    • 이미지·영상 처리, 객체 인식, 3D 재구성 등 다양한 기능 제공
    • 파이썬, C++, 자바 등 여러 언어에서 사용 가능

사용하는 이유!

  • 직접 픽셀을 조작하기 힘든 부분을 함수로 대신 처리
  • 다양한 알고리즘이 이미 구현돼 있어 개발 속도 ↑
  • 활발한 커뮤니티+문서로 학습 자료 풍부
  • 오픈소스라서 개인적 사용도 상업적 사용도 모두 무료로 가능!

2. 환경 설정

사용 조건

  • Python 3.x 이상 (필수)
  • Jupyter Notebook (선택, 원하는 파이썬 지원 프로그램 이용)

설치 방법

# 기본 설치
pip install opencv-python

# 확장 모듈까지 설치하고 싶으면
pip install opencv-contrib-python

설치 후 버전 확인:

import cv2
print(cv2.__version__)  # 예) 4.8.0

3. 이미지 읽기 & 출력

1) 이미지 읽기

import cv2

# imread(파일경로, 모드)
img = cv2.imread('./images/sample.jpg', cv2.IMREAD_COLOR)
  • cv2.IMREAD_COLOR : 컬러 이미지로 불러오기 (투명 채널 무시)
  • cv2.IMREAD_GRAYSCALE : 흑백 이미지로 불러오기
  • cv2.IMREAD_UNCHANGED : 투명 채널 포함해 그대로 불러오기

필요한 모드 선택해서 사용하면 돼 😊

2) 이미지 출력

# 윈도우에 이미지 띄우기
cv2.imshow('Sample Image', img)

# 키 입력 대기 (0: 무한 대기)
cv2.waitKey(0)

# 모든 창 닫기
cv2.destroyAllWindows()

Jupyter Notebook에서는 imshow 대신 matplotlib을 사용하면 편해!

import matplotlib.pyplot as plt
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()

4. 이미지 저장하기

# imwrite(저장경로, 이미지)
success = cv2.imwrite('./output/result.jpg', img)

if success:
    print('이미지 저장 완료!')
else:
    print('저장 실패...')

5. 실습 예제: 그레이스케일 변환

import cv2

# 원본 읽기
img = cv2.imread('./images/sample.jpg')

# 그레이 변환
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 결과 출력
cv2.imshow('Gray Image', gray)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • cv2.cvtColor() 함수로 색 공간 변환
  • cv2.COLOR_BGR2GRAY 등 다양한 변환 코드 활용 가능

마무리

지금까지 OpenCV 설치부터

  • 기본 설치
  • 이미지 읽기/출력
  • 옵션 설명
  • 간단한 실습 예제

까지 살펴봤어요!
다음 포스트에서는 이진화 방법에 대한 내용 정리, 자동으로 문턱값을 찾아주는 오츠 알고리즘 같은
조금 더 심화된 내용을 다뤄볼 예정이니 기대해주세요!

궁금한 점 있으면 댓글로 남겨주세요! (>_<)

작성일 : 2025.06.11
작성자 : 발라

profile
능숙한 바이브코딩을 할 수 있게 됨을 꿈꾸며

0개의 댓글