WjExplor Story

2. 영상 입출력과 Display 본문

Python/Python : Opencv Study

2. 영상 입출력과 Display

더블유제이플로어 2025. 8. 7. 11:19

OpenCV에서 가장 기본이 되는 이미지 입출력 및 윈도우 처리 함수들 알아보자.

지금 표에 나온 함수들은 주로 이미지 파일을 열고, 화면에 띄우고, 저장하고, 창을 닫는 GUI 루틴의 기초이니까 아주 중요하다.

목적 주요 함수
이미지 읽기 cv2.imread()
이미지 저장 cv2.imwrite()
윈도우 생성 cv2.namedWindow()
이미지 출력 cv2.imshow()
키 입력 대기 cv2.waitKey()
윈도우 종료 cv2.destroyWindow(), cv2.destroyAllWindows()

✅ 더 알아야 할 내용

표에 없는 부분 중 꼭 같이 알아야 하는 함수 및 개념 정리

🎯 1. cv2.waitKey() 의 리턴값 의미

  • cv2.waitKey(delay)는 키보드 입력을 기다림. 이때 delay는 밀리초 단위 대기 시간
  • 리턴값은 눌린 키의 ASCII 코드임. 예를 들어:
key = cv2.waitKey(0)
if key == ord('q'):
    print("q를 눌렀습니다.")

🎯 2. cv2.imread() 옵션 flags

cv2.imread(filename, flags)에서 flags의 대표값:

  • cv2.IMREAD_COLOR (기본값, 값: 1): 컬러 이미지로 읽음 (알파채널 무시)
  • cv2.IMREAD_GRAYSCALE (값: 0): 흑백 이미지로 읽음
  • cv2.IMREAD_UNCHANGED (값: -1): 알파 채널 포함 원본 그대로 읽음

🎯 3. 이미지 저장 함수 cv2.imwrite() 사용 시 주의점

  • 저장 확장자는 파일명으로 결정되므로 "output.jpg"처럼 써야 함
  • 저장 성공 여부를 True/False로 반환하므로 확인 가능:
success = cv2.imwrite("saved.jpg", img)
if success:
    print("저장 성공!")

🎯 4. imshow는 GUI 환경에서만 작동

  • 터미널-only 환경에서는 imshow()가 안 뜰 수 있음
  • Jupyter Notebook에서는 대신 matplotlib.pyplot.imshow() 많이 사용함

🎯 5. 창 옵션 flag (namedWindow)

cv2.namedWindow(winname, flag)의 flag 종류:

  • cv2.WINDOW_NORMAL: 창 크기 조절 가능
  • cv2.WINDOW_AUTOSIZE: 이미지 크기에 맞게 고정 (기본값)

📌 예제 코드 (전체 흐름)

import cv2

# 이미지 읽기
img = cv2.imread("image.jpg", cv2.IMREAD_COLOR)

# 창 생성 (선택사항)
cv2.namedWindow("MyWindow", cv2.WINDOW_NORMAL)

# 이미지 출력
cv2.imshow("MyWindow", img)

# 키 입력 대기 (0이면 무한 대기)
key = cv2.waitKey(0)

# q를 누르면 종료
if key == ord('q'):
    cv2.destroyAllWindows()

📝 OpenCV로 이미지 저장하기 (cv2.imwrite)

OpenCV에서는 cv2.imwrite() 함수를 사용하여 이미지 파일을 저장할 수 있습니다.
지원되는 형식은 .jpg, .png, .bmp 등이며, 저장 시 포맷에 따라 압축률이나 품질을 조절할 수 있습니다.

✅ 기본 사용법

cv2.imwrite(filename, image)
  • filename: 저장할 파일 이름 (확장자 포함)
  • image: 저장할 이미지 (NumPy 배열)

📌 예제 코드

import cv2

# 이미지 불러오기
img = cv2.imread(".\\Image\\Lenna.png", cv2.IMREAD_COLOR)

# BMP 포맷으로 저장 (무압축)
cv2.imwrite("Lenna.bmp", img)

# JPG 포맷으로 저장 (기본 품질)
cv2.imwrite("Lenna.jpg", img)

# PNG 포맷으로 저장 (압축률 지정: 0~9, 클수록 고압축)
cv2.imwrite("Lenna_C.png", img, [cv2.IMWRITE_PNG_COMPRESSION, 9])

# JPEG 포맷으로 저장 (품질 지정: 0~100, 높을수록 고품질)
cv2.imwrite("Lenna_Q.jpg", img, [cv2.IMWRITE_JPEG_QUALITY, 90])

🧠 Tip

  • 파일 확장자를 지정하면 OpenCV가 자동으로 포맷을 인식합니다.
  • 고품질 이미지 저장이 필요한 경우 JPEG 품질을 90 이상으로 설정하세요.
  • 무손실 저장이 필요하면 PNG 또는 BMP 포맷을 추천합니다.

 

출처 : https://kali-live.tistory.com/6

 

OpenCV 강좌 2 - 영상 입출력과 Display

이전까지 OpenCV를 설치하는 과정까지 진행하였습니다. 오늘은 OpenCV를 활용하여 이미지, 동영상을 불러오고 컴퓨터에서 화면을 띄우는 과정까지 진행하도록 하겠습니다. 함수 설명 출력 cv2.imread(

kali-live.tistory.com

 

'Python > Python : Opencv Study' 카테고리의 다른 글

허프(Hough) 변환  (2) 2025.09.11
4. 도형 그리기  (5) 2025.08.07
3. 비디오 프레임 캡쳐 및 표시  (4) 2025.08.07