✔︎ OpenCV 최신 기술 및 튜토리얼
https://docs.opencv.org/master/
OpenCV 주요 함수 API
✔ 파일 불러오기
import cv2
retval = cv2.imread(filename, flags=None)
- filename : 불러올 영상 파일 이름 (문자열)
- flags : 영상 파일 불러오기 옵션 플래그
cv2.IMREAD_COLOR | BGR 컬러 영상으로 읽기 (기본값) shape = (rows, cols, 3) |
cv2.IMREAD_GRAYSCALE | 그레이스케일 영상으로 읽기 shape = (rows, cols) |
cv2.IMREAD_UNCHANGED | 영상 파일 속성 그대로 읽기 (e.g.) 투명한 PNG 파일: shape = (rows, cols, 4) |
- retval : 불러온 영상 데이터 (numpy.ndarray)
✔ 파일 저장하기
retval = cv2.imwrite(filename , img , params=None )
- filename : 저장할 영상 파일 이름 (문자열)
- img : 저장할 영상 데이터 (numpy.ndarray)
- params : 파일 저장 옵션 지정 (속성 & 값의 정수 쌍)
e.g) [cv2.IMWRITE_JPEG_QUALITY, 90] : JPG 파일 압축률을 90%로 지정 - retval : 정상적으로 저장하면 True, 실패하면 False.
✔ 새 창 띄우기
cv2.namedWindow(winname , flags=None )
- winname : 창 고유 이름 (문자열)
- flags : 창 속성 지정 플래그
cv2.WINDOW_NORMAL | 영상 크기를 창 크기에 맞게 지정 |
cv2.WINDOW_AUTOSIZE | 창 크기를 영상 크기에 맞게 변경 (기본값) |
✔ 창 닫기
cv2.destroyWindow(winname)
cv2.destroyAllWindows()
- winname : 닫고자 하는 창 이름
- 참고사항
- cv2.destroyWindow() 함수는 지정한 창 하나만 닫고, cv2.destroyAllWindows() 함수는 열려 있는 모든 창을 닫음.
- 일반적인 경우 프로그램 종료 시 운영 체제에 의해 열려 있는 모든 창이 자동으로 닫힘
✔ 창 위치 이동
cv2.moveWindow(winname, x, y)
- winname : 창 이름
- x, y : 이동할 위치 좌표
✔ 창 크기 변경
cv2.resizeWindow(winname, width, height)
- winname : 창 이름
- width : 변경할 창의 가로 크기
- height : 변경할 창의 세로 크기
- 참고 사항
- 창 생성 시 cv2.WINDOW_NORMAL 속성으로 생성되어야 동작
- 영상 출력 부분의 크기만을 고려함 (제목 표시줄, 창 경계는 고려되지 않음)
✔ 영상 출력하기
cv2.imshow(winname, mat)
- winname : 영상을 출력할 대상 창 이름
- mat : 출력할 영상 데이터 (numpy.ndarray)
- 참고 사항
- uint16, int32 자료형 행렬의 경우, 행렬 원소 값을 255로 나눠서 출력
- float32, float64 자료형 행렬의 경우, 행렬 원소 값에 255를 곱해서 출력
- 만약 winname에 해당하는 창이 없으면 창을 새로 만들어서 영상을 출력함
- Windows 운영체제에서는 Ctrl + C (복사), Ctrl + S (저장) 지원
- 실제로는 cv2.waitKey() 함수를 호출해야 화면에 영상이 나타남
✔ 키보드 입력 대기
cv2.waitKey(delay=None)
- delay : 밀리초 단위 대기 시간. delay ≤ 0 이면 무한히 기다림. 기본값은 0
- retval : 눌린 키 값(ASCII code). 키가 눌리지 않으면 -1
- 참고 사항
- cv2.waitKey() 함수는 OpenCV 창이 하나라도 있을 때 동작함
- 특정 키 입력을 확인하려면 ord() 함수를 이용
- 주요 특수키 코드: 27(ESC), 13(ENTER), 9(TAB)
Matplotlib 사용하여 영상 출력하기
Matplotlib 라이브러리
: 함수 그래프, 차트(chart), 히스토그램(histogram) 등의 다양한 그리기 기능을 제공하는 Python 패키지
pip install matplotlib
컬러 영상 출력
- 컬러 영상의 색상 정보가 RGB 순서이어야 한다.
- cv2.imread() 함수로 불러온 영상의 색상 정보는 BGR 순서이므로 이를 RGB 순서로 변경해야 한다.
→ cv2.cvtColor() 함수 이용
그레이스케일 영상 출력
- plt.imshow() 함수에서 컬러맵을 cmap='gray' 으로 지정
Matplotlib을 이용하여 영상 출력하기
import matplotlib.pyplot as plt
import cv2
# 컬러 영상 출력
imgBGR = cv2.imread('cat.bmp')
imgRGB = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2RGB)
plt.axis('off')
plt.imshow(imgRGB)
plt.show()
# 그레이스케일 영상 출력
imgGray = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE)
plt.axis('off')
plt.imshow(imgGray, cmap='gray')
plt.show()
Matplotlib을 이용하여 창 하나에 여러 개의 이미지 출력
import matplotlib.pyplot as plt
import cv2
# 컬러 영상 & 그레이스케일 영상 불러오기
imgBGR = cv2.imread(cat.bmp')
imgRGB = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2RGB)
imgGray = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE)
# 두 개의 영상을 함께 출력
plt.subplot(121), plt.axis('off'), plt.imshow(imgRGB)
plt.subplot(122), plt.axis('off'), plt.imshow(imgGray, cmap='gray')
plt.show()
'OpenCV' 카테고리의 다른 글
[OpenCV] 기초 5 : 키보드 이벤트/ 마우스 이벤트 (0) | 2022.01.30 |
---|---|
[OpenCV] 기초 4 : 카메라와 동영상 처리 (0) | 2022.01.30 |
[OpenCV] 기초 3 : 마스크 / 그리기 함수 (0) | 2022.01.30 |
[OpenCV] 기초 2 (0) | 2022.01.30 |
OpenCV 란? (1) | 2022.01.30 |