[OpenCV] 이미지 처리 기본 코드

Checking·2022년 10월 24일
2

OpenCV

목록 보기
3/4
post-thumbnail

OpenCV 이미지 처리

OpenCV 모듈 가져오기

import cv2

# 만약 ModuleNotFoundError가 날 경우, 하단 코드를 터미널에 입력
# pip install opencv-python

이미지 불러오기

기본 형태

cv2.imread(filename, flags='IMREAD_COLOR') ->	retval
  • filename : 불러올 파일 경로
    • 파일의 경로는 상대 경로와 절대 경로 둘 다 가능합니다.
      • 상대 경로 : 실행되는 코드 기준으로 경로가 지정됩니다.
        • ex) filename = 'imagesFolder/flower.png'
      • 절대 경로 : 컴퓨터의 기준으로 경로가 지정됩니다.
        • ex) filename = 'C:/Users/Default/imagesFolder/flower.png'
  • flags : 이미지 불러오는 모드 (기본값 : ‘IMREAD_COLOR’)
    • 이미지 불러오는 모드는 다양한 종류가 있지만 크게 두 종류가 있습니다.
      - IMREAD_COLOR : 컬러 색상으로 이미지를 불러옵니다.
      - IMREAD_GRAYSCALE : 회색조 색상으로 이미지를 불러옵니다.

※ 이미지를 읽을 수 없는 경우(파일 누락, 부적절한 권한, 지원되지 않거나 잘못된 형식으로 인해) 함수는 빈 행렬(NULL)을 반환합니다.

읽을 수 있는 파일 목록

  • Windows 비트맵 - .bmp, .dib
  • JPEG 파일 - .jpeg, .jpg, *.jpe
  • JPEG 2000 파일 - *.jp2
  • 휴대용 네트워크 그래픽 - *.png
  • WebP - *.webp
  • 휴대용 이미지 형식 - .pbm, .pgm, .ppm .pxm, *.pnm
  • Sun 래스터 - .sr, .ras
  • TIFF 파일 - .tiff, .tif
  • OpenEXR 이미지 파일 - *.exr
  • Radiance HDR - .hdr, .pic
  • GDAL에서 지원하는 래스터 및 벡터 지리 공간 데이터

코드 사용 예시

import cv2 # OpenCV 모듈 불러오기

# 절대 경로로 바탕화면의 sky.jpg를 불러와 img 변수에 저장
img = cv2.imread('C:/Users/Default/Desktop/sky.jpg', cv2.IMREAD_COLOR)

이미지 출력

기본 형태

cv2.imshow(winname, mat) ->	None
  • winname : 열리는 창의 이름
  • mat : 출력할 이미지 Mat

코드 사용 예시

import cv2 # OpenCV 모듈 불러오기

# 절대 경로로 바탕화면의 sky.jpg를 불러와 img 변수에 저장
image1 = cv2.imread('C:/Users/Default/Desktop/sky.jpg', cv2.IMREAD_COLOR)

# 'this is sky'라는 창에 image1을 출력합니다.
cv2.imshow('this is sky', image1)
cv2.waitKey() # waitKey는 창을 확인하기 위하여 추가합니다. (없을시 코드가 바로 종료됩니다.)


이미지 크기 변경

기본 형태

cv.resize(src, dsize, fx = 0, fy = 0, interpolation = cv2.INTER_LINEAR) -> dst
  • src : 크기를 변경할 이미지 Mat
  • dsize : 변경할 이미지 절대 크기 (가로, 세로)
  • fx : 가로 상대 크기 (기본 값 : 0)
  • fy : 세로 상대 크기 (기본 값 : 0)
  • interpolation : 보간법 (기본 값 : cv2.INTER_LINEAR)
    cv2.INTER_NEAREST최근접 이웃 보간
    cv2.INTER_LINEAR쌍선형 보간법
    cv2.INTER_LINEAR_EXACT비트 쌍 선형 보간법
    cv2.INTER_CUBIC바이큐빅 보간법
    cv2.INTER_AREA영역 보간법
    cv2.INTER_LANCZOS4Lanczos 보간법

※ dsize, fx, fy가 모두 0일 시 오류가 발생합니다.

※ 상대 크기로 변경하려면 절대 크기가 (0, 0) 이어야 합니다.

→ 상대 크기로 이미지 변경 후 절대 크기로 변경하는 순서이기 때문

코드 사용 예시

import cv2 # OpenCV 모듈 불러오기

# 절대 경로로 바탕화면의 sky.jpg를 불러와 img 변수에 저장
image1 = cv2.imread('C:/Users/Default/Desktop/sky.jpg', cv2.IMREAD_COLOR)

# image1의 크기를 512, 512로 변경하고 nowImage에 저장
nowImage = cv2.resize(image1, (512, 512), 0, 0, cv2.INTER_CUBIC)

# 'this is sky'라는 창에 image1을 출력합니다.
cv2.imshow('this is sky', nowImage)
cv2.waitKey() # waitKey는 창을 확인하기 위하여 추가합니다. (없을시 코드가 바로 종료됩니다.)


이미지 저장

기본 형태

cv2.imwrite(filename, img) -> retval
  • filename : 저장할 파일 경로
    • 파일의 경로는 상대 경로와 절대 경로 둘 다 가능합니다.
      • 상대 경로 : 실행되는 코드 기준으로 경로가 지정됩니다.
        • ex) filename = 'imagesFolder/flower.png'
      • 절대 경로 : 컴퓨터의 기준으로 경로가 지정됩니다.
        • ex) filename = 'C:/Users/Default/imagesFolder/flower.png'
  • img : 저장할 이미지 Mat

코드 사용 예시

import cv2

image1 = cv2.imread('C:/Users/Default/Desktop/sky.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imwrite('graySky.png', image1)

참조

profile
(ง ᐖ)ว

0개의 댓글