OpenCV 에서 제공하는 imshow의 사용 예제 문서임.
안정적인 동작을 원한다면, matplotlib를 사용하는 경우가 훨씬 낫다.
생각보다 cv2.imshow는 사용할 때 호환성 문제 등이 생각보다 많다.
예제 코드

from skimage import data
import cv2
# skimage 라이브러리에서 고양이 테스트 이미지를 불러옴
cat = data.chelsea() # Chelsea 테스트 이미지(고양이)를 로드
cat = cat[...,::-1]
print(f'{cat.shape=}') # 이미지의 크기(shape)를 출력
# 이름이 지정된 창을 생성 (선택 사항) 및 창 크기 조정 가능
cv2.namedWindow('test_cat', cv2.WINDOW_NORMAL) # WINDOW_NORMAL 플래그는 창 크기 조정을 허용
cv2.imshow('test_cat', cat) # 'test_cat' 창에 고양이 이미지를 표시
# ESC 키나 창 닫기 이벤트가 발생할 때까지 창을 유지하는 무한 루프
while True:
k = cv2.waitKey(10) # 10밀리초마다 키 입력 대기
if k & 0xFF == 27: # ESC 키(ASCII 코드 27)가 입력되면 루프 종료
break
if cv2.getWindowProperty('test_cat', cv2.WND_PROP_VISIBLE) < 1: # 창이 닫힌 경우
break
# 루프 종료 후 모든 OpenCV 창을 닫음 (ESC 키나 창 닫기 이벤트 발생 시)
cv2.destroyAllWindows()
위의 예제에서 보이듯이 while 문 이후의 처리를 해주는게 여러가지로 편함.
주요 요소 설명:
skimage.data.chelsea():skimage라이브러리에서 제공하는 고양이 이미지(테스트 이미지)를 로드cv2.namedWindow: 지정된 이름의 창을 생성하고,cv2.WINDOW_NORMAL플래그를 통해 창 크기 조정이 가능하도록 설정.cv2.imshow: 지정된 창에 이미지를 표시.cv2.waitKey(10): 10밀리초마다 키 입력을 대기하며, ESC 키나 창 닫기 이벤트가 발생하면 루프를 종료.cv2.getWindowProperty: 창이 여전히 열려 있는지 확인하고, 닫힌 경우 루프를 종료.cv2.destroyAllWindows(): 루프가 끝난 후 모든 OpenCV 창을 닫음.
같이 보면 좋은 자료들
2024.09.22 - [Programming/DIP] - [DIP] Image 다루기: 기본편 1; (Summary)
[DIP] Image 다루기: cv2-기본편 1 (Summary)
openCV를 통한 이미지를 다루기 위한 기본 내용Pillow는 다음을 참고:https://ds31x.tistory.com/465 Pillow 사용법 - Basic 01Pillow 라이브러리의 기본적인 사용법을 다룬다. 2024.06.03 - [Python] - [Python] PIL, Pillow, Ope
dsaint31.tistory.com
2023.04.07 - [Programming/DIP] - [OpenCV] imshow 창설정 및 종료 처리 (x버튼 처리)
[OpenCV] imshow 창설정 및 종료 처리 (x버튼 처리)
imshow 창설정 및 종료 처리 (x버튼 처리)창 설정 관련 arguments 및 options cv2.namedWindow를 통해 미리 창에 대한 title을 지정하여 놓을 수 있음.cv2.namedWindow('image', cv2.WINDOW_NORMAL)# Using resizeWindow() : Below cod
dsaint31.tistory.com
https://dsaint31.me/mkdocs_site/DIP/cv2/ch00/dip_0_00/
BME228
1. OpenCV를 통한 Image 다루기 (읽고 쓰기) 기본적으로 cv2를 이용하여 이미지를 읽어들이고, 저장하는 방법을 다룬다. 구체적인 함수는 다음과 같다. cv2.imread cv2.imshow cv2.imwrite 추가적으로 다루는 함
dsaint31.me
2022.10.21 - [Programming] - openCV : cv2.waitKey bug
openCV : cv2.waitKey bug
아래 글은 WSL2에서 WSLg의 버전이 낮을 경우 발생함. WSL에서의 2022.10 당시 위의 문제를 해결한 상태임. 다음 글 참조. https://bme808.blogspot.com/2022/10/cv2waitkey-wsl.html cv2.waitkey 가 wsl에서 잘 안동작하던
dsaint31.tistory.com
'Programming > DIP' 카테고리의 다른 글
| [CV] cv2.imread() (4) | 2024.09.16 |
|---|---|
| [DIP] plt.imshow: matplotlib.pyplot (1) | 2024.09.16 |
| [OpenCV] VideoCapture 사용법. (0) | 2024.09.11 |
| [OpenCV] API Backend for VideoCapture (0) | 2024.09.11 |
| [DIP] Hu Moment (2) | 2024.09.10 |
