AI 그게 뭔데
끄적끄적 개발일지
AI 그게 뭔데
전체 방문자
오늘
어제
  • 분류 전체보기 (342)
    • 논문 (5)
    • DL(Deep-Learning) (34)
      • 개념 (14)
      • Python 기초 (14)
      • Tensorflow (6)
      • Pytorch (0)
    • NLP (10)
    • OpenCV (53)
    • DevOps (10)
      • AWS (2)
      • Docker & Kubernetes (4)
      • Spark (3)
      • SQL (1)
    • MacOS (1)
    • React-Native (2)
    • BI (3)
      • GA(Google Analytics) (3)
      • Tableau (0)
    • 알고리즘 (221)
      • 백준 (76)
      • 프로그래머스 (108)
      • 기타 알고리즘 (37)

인기 글

태그

  • OpenCV
  • 알고리즘
  • Python
  • 이코테
  • 프로그래머스
  • 파이썬
  • 백준
  • level1
  • LEVEL2
  • 연습문제

최근 글

hELLO · Designed By 정상우.
AI 그게 뭔데

끄적끄적 개발일지

[OpenCV] 기초 1 : 주요 함수
OpenCV

[OpenCV] 기초 1 : 주요 함수

2022. 1. 30. 20:17

✔︎  OpenCV 최신 기술 및 튜토리얼

 

https://docs.opencv.org/master/

 

OpenCV: OpenCV modules

OpenCV  4.5.5-dev Open Source Computer Vision

docs.opencv.org

 

 

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
    AI 그게 뭔데
    AI 그게 뭔데
    공부와 개발 그리고 AI가 약간 첨가된 흔적 남기기

    티스토리툴바