Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- 스택
- 인프런
- 점프투파이썬
- 깊은복사
- 백준
- 동적바인딩
- python
- 주피터
- 람다식
- 얕은복사
- C++
- 기본클래스
- 제네릭프로그래밍
- list comprehension
- 11382번
- 상속
- 코드잇
- 유도클래스
- 프로그래머스lv2
- OOP
- 참조자
- 포인터
- 다형성
- OpenCV
- 연산자오버로딩
- c++코딩테스트합격자되기
- STL
- 데이터사이언스
- 코딩테스트
- 멤버함수로구현
Archives
- Today
- Total
WjExplor Story
2. 영상 입출력과 Display 본문
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 |