[CV] cv2.imread()

2024. 9. 16. 14:31·Programming/DIP
728x90
728x90

cv2.imread()는 OpenCV에서 이미지를 파일로부터 읽어오는 함수.


Signature:

cv2.imread(filename, flags=cv2.IMREAD_COLOR)

Parameters(매개변수):

  1. filename (string):
    • 읽어올 이미지 파일의 경로(Path).
    • 파일 경로는 절대 경로나 상대 경로를 사용할 수 있음.
    • 예: './image.jpg', '/home/cv/photo.png'
  2. flags (int, optional):
    • 이미지를 읽어올 때 적용할 옵션을 지정.
    • 기본값은 cv2.IMREAD_COLOR이며, 다른 값으로 설정하면 이미지를 읽어오는 방식이 달라짐.
    • 주요 옵션은 다음과 같음:
      • cv2.IMREAD_COLOR (기본값): 이미지를 컬러 이미지로 읽음 (BGR로 불러와짐), 1 에 해당
      • cv2.IMREAD_GRAYSCALE: 이미지를 그레이스케일 이미지로 읽음 (shape에서 channel이 없음), 0 에 해당
      • cv2.IMREAD_UNCHANGED: 이미지의 원본 그대로 로드. (알파 채널 포함 시 BGRA), -1 에 해당
      • cv2.IMREAD_ANYCOLOR: 가능한 한 이미지를 컬러로 로드.
      • cv2.IMREAD_ANYDEPTH: 일반적으로 이미지는 8비트 정수형(uint8)으로 로드하지만, 원본 이미지가 16비트 또는 32비트인 경우, 해당 비트 깊이를 유지하여 이미지를 로드.

파일의 경로(Path)에 대한 이해가 부족한 경우 다음 접은 글을 열어서 참고할 것.

더보기

2021.10.17 - [Computer/ETC] - Path (경로)

 

Path (경로)

파일 시스템 내에서 특정 파일(혹은 디렉토리)의 위치를 나타내는 양식Absolute Path (절대 경로)현 작업디렉토리(cwd)와 관계없이 절대적 위치드라이브:\폴더\폴더\파일명 (Windows)c:\Windows\System32\driver

dsaint31.tistory.com


URL에 있는 이미지를 읽어들이는 방법은 다음 접은 글을 참고할 것.

더보기

2022.09.21 - [Programming/DIP] - [DIP] opencv에서 URL로 이미지 로딩

 

[DIP] opencv에서 URL로 이미지 로딩

OpenCV에서 URL로 이미지 로딩request 모듈을 활용하면 간단하게 URL에서 이미지 로딩이 된다.reauest로 url을 get메서드로 가져옴.request.content 는 immutable bytes이므로 이를 bytearray로 변경.해당 bytearray 객첼

dsaint31.tistory.com



Return Value(반환값):

  • numpy.ndarray: 이미지가 NumPy 배열로 반환.
    • 각 픽셀은 BGR 순서로 배열 : 일반적인 RGB Color model이 아님을 주의할 것.
    • 이미지가 존재하면 해당 이미지가 반환되고, 존재하지 않으면 None이 반환.

예제 코드:

cv_imread.py
0.00MB

 

 

#!/bin/env python  # 스크립트 실행을 위한 인터프리터 설정

import sys  # 시스템 관련 모듈
import cv2  # OpenCV 모듈
import os   # 파일 경로 관련 모듈

# 함수: 파일을 읽어와 이미지로 반환하는 함수
def ds_imread(f_str, mode=cv2.COLOR_RGB2BGR):  
    img = cv2.imread(f_str, mode)  # 이미지 파일 읽기
    if img is None:  # 파일이 없거나 읽을 수 없으면 프로그램 종료
        sys.exit(f'Error: There is not a file: {f_str}')
    return img  # 읽은 이미지를 반환

# 함수: 화면의 해상도를 반환하는 함수
def ds_screen_size():
    import tkinter as tk  # Tkinter 모듈을 사용해 화면 크기 가져오기
    root = tk.Tk()  # Tkinter 객체 생성
    w = root.winfo_screenwidth()  # 화면 너비 얻기
    h = root.winfo_screenheight()  # 화면 높이 얻기
    return w, h  # 화면의 너비와 높이를 반환

# 메인 코드 실행부
if __name__ == "__main__": 

    # 현재 파일이 있는 디렉토리에서 이미지 파일 경로 생성
    dir_str = os.path.dirname(__file__)
    f_str = os.path.join(dir_str, "cat_cv.tif")  # "cat_cv.tif" 파일 경로 설정

    # 이미지를 불러오기 (기본적으로 COLOR_RGB2BGR 모드 사용)
    img = ds_imread(f_str)
    print(f"{img.shape=}")  # 이미지의 크기(shape)를 출력
    print(f"{img.dtype=}")  # 이미지의 데이터 타입(dtype)을 출력

    # 이미지의 높이와 너비 얻기
    ih, iw = img.shape[:2]

    # 화면의 해상도(너비, 높이) 얻기
    sw, sh = ds_screen_size()

    # 창을 생성하고 창 크기 조정이 가능하도록 설정
    cv2.namedWindow('01', cv2.WINDOW_NORMAL)

    # 창을 화면 중앙에 이동 (화면 크기에서 이미지 크기의 절반을 뺀 위치)
    cv2.moveWindow('01', (sw - iw) // 2, (sh - ih) // 2)

    # 이미지를 창에 표시
    cv2.imshow('01', img)

    # ESC 키를 누르거나 창을 닫을 때까지 대기
    while True:
        key = cv2.waitKey(100)  # 100ms마다 키 입력을 기다림
        if key & 0xFF == 27:  # ESC 키가 입력되면 종료
            break
        if cv2.getWindowProperty('01', cv2.WND_PROP_VISIBLE) < 1:  # 창이 닫혔는지 확인
            break

    # 모든 OpenCV 창을 닫음
    cv2.destroyAllWindows()

설명:

  1. ds_imread() 함수:
    • 이 함수는 주어진 파일 경로로부터 이미지를 로드.
    • 기본 모드는 cv2.COLOR_RGB2BGR로 설정.
    • 만약 파일을 읽을 수 없을 경우, 오류 메시지를 출력하고 프로그램을 종료.
  2. ds_screen_size() 함수:
    • Tkinter 라이브러리를 이용해 현재 화면의 해상도(너비와 높이)를 반환.
    • 이 값은 이미지를 화면 중앙에 배치하는 데 사용됨.
  3. 메인 코드:
    • 현재 스크립트가 실행 중인 디렉토리에서 "cat_cv.tif"라는 이미지 파일을 로드.
    • ds_screen_size() 함수를 이용해 화면 크기를 얻고, cv2.moveWindow()를 사용하여 OpenCV 창을 화면 중앙에 배치함.
    • cv2.imshow()를 이용해 이미지를 창에 표시하고, ESC 키가 입력되거나 창이 닫힐 때까지 프로그램이 실행.
  4. 이미지 표시:
    • OpenCV 창의 이름을 '01'로 설정
    • 해당 창이 중앙에 위치하도록 이동.
    • 이미지를 창에 표시한 후, 사용자가 ESC 키를 누르거나 창을 닫으면 프로그램이 종료.

같이보면 좋은 자료들

2022.09.21 - [Programming/DIP] - [DIP] Color Space or Color Model

 

[DIP] Color Space or Color Model

Color Space(색 공간)은 "사람의 눈"이 3개의 color에 반응하는 감각세포(cone cell)를 통해 색을 인식하는 것에 기반하여 Tristimulus values (X,Y,Z)와 각각의 color를 연관시키는 방식처럼 "특정 공간의 위치"에

dsaint31.tistory.com

2022.07.14 - [Programming/DIP] - [OpenCV] cvtColor

 

[OpenCV] cvtColor

OpenCV의 경우, 다양한 color space를 지원함. result_img = cv2.cvtColor(src_img, conversion_flag) 위와 같은 code를 통해 src_img를 다른 color space의 이미지(실제로는 numpy의 ndarray) result_img로 변경할 수 있음. conversion_

dsaint31.tistory.com


 

 

'Programming > DIP' 카테고리의 다른 글

[DIP] cv2.imwrite  (1) 2024.09.22
[DIP] alpha 채널과 검은색 글씨 처리 with convertScaleAbs  (0) 2024.09.16
[DIP] plt.imshow: matplotlib.pyplot  (1) 2024.09.16
[DIP] cv2.imshow 사용예  (2) 2024.09.16
[OpenCV] VideoCapture 사용법.  (0) 2024.09.11
'Programming/DIP' 카테고리의 다른 글
  • [DIP] cv2.imwrite
  • [DIP] alpha 채널과 검은색 글씨 처리 with convertScaleAbs
  • [DIP] plt.imshow: matplotlib.pyplot
  • [DIP] cv2.imshow 사용예
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (738)
      • Private Life (13)
      • Programming (186)
        • DIP (104)
        • ML (26)
      • Computer (118)
        • CE (52)
        • ETC (33)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (9)
      • ... (349)
        • Signals and Systems (103)
        • Math (170)
        • Linear Algebra (33)
        • Physics (42)
        • 인성세미나 (1)
      • 정리필요. (54)
        • 의료기기의 이해 (6)
        • PET, MRI and so on. (1)
        • PET Study 2009 (1)
        • 방사선 장해방호 (4)
        • 방사선 생물학 (3)
        • 방사선 계측 (9)
        • 기타 방사능관련 (3)
        • 고시 (9)
        • 정리 (18)
      • RI (0)
      • 원자력,방사능 관련법 (2)
  • 블로그 메뉴

    • Math
    • Programming
    • SS
    • DIP
  • 링크

    • Convex Optimization For All
  • 공지사항

    • Test
    • PET Study 2009
    • 기타 방사능관련.
  • 인기 글

  • 태그

    Probability
    Term
    signal_and_system
    signals_and_systems
    fourier transform
    function
    random
    Convolution
    검사
    math
    opencv
    numpy
    Python
    Optimization
    인허가제도
    linear algebra
    SIGNAL
    Programming
    Vector
    SS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dsaint31x
[CV] cv2.imread()
상단으로

티스토리툴바