◆ OpenCV는 래스터 그래픽스 이미지 파일 포맷을 쉽게 불러올 수 있는 별도의 함수를 제공한다.
▶ 이 함수는 불러온 압축 해제된 이미지 데이터 구조에 필요한 메모리 할당과 같은 복잡한 작업을 처리하며,
파일 시그니처(File Signature)를 읽어 적절한 코덱을 결정한다.
◆ OpenCV에서 이미지를 불러올 때는 확장자를 확인하는 방식이 아닌 파일 시그니처를 읽어 파일의 포맷을 분석한다.
◆ 파일 시그니처는 파일 매직 넘버(File Magic Number)라고도 하며, 각 파일 형식마다 몇 개의 바이트가 지정되어 있다.
- 예를 들어, PNG 확장자의 경우 89 50 4E 47 … 형태로 파일 헤더에 포함되어 있다.
- 이미지 입력 함수는 운영체제의 코덱을 사용해 운영체제 별로 픽셀값이 다를 수 있다.
---< 예제 : Image_read.py 간단하게 이미지 불러옴>--------------------------------------------
import cv2
img = cv2.imread("image.jpg")
cv2.imshow("image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
--------------------------------------------------------------------------------------------
---< 예제 : Image_read-shape.py >--------------------------------------------
import cv2
image = cv2.imread("Image/lunar.jpg", cv2.IMREAD_ANYCOLOR)
height, width channel = image.shape
print(height, width , channel)
cv2.imshow("Moon", image)
cv2.waitKey()
cv2.destroyAllWindows()
-----------------------------------------------------------------------------
● image = cv2.imread(fileName, flags)
- 파일 경로(fileName)의 이미지 파일을 플래그(flags) 설정에 따라 불러온다.
- 파일 경로(fileName)는 상대 경로 또는 절대 경로를 사용하여 이미지를 불러옵니다.
▶ flags은 이미지를 초기에 불러올 때 적용할 초기 상태를 의미한다.
<flags>
cv2.IMREAD_UNCHANGED : 원본 사용
cv2.IMREAD_GRAYSCALE : 1 채널, 그레이스케일 적용
cv2.IMREAD_COLOR : 3 채널, BGR 이미지 사용
cv2.IMREAD_ANYDEPTH : 이미지에 따라 정밀도를 16/32비트 또는 8비트로 사용
cv2.IMREAD_ANYCOLOR : 가능한 3 채널, 색상 이미지로 사용
cv2.IMREAD_REDUCED_GRAYSCALE_2 : 1 채널, 1/2 크기, 그레이스케일 적용
cv2.IMREAD_REDUCED_GRAYSCALE_4 : 1 채널, 1/4 크기, 그레이스케일 적용
cv2.IMREAD_REDUCED_GRAYSCALE_8 : 1 채널, 1/8 크기, 그레이스케일 적용
cv2.IMREAD_REDUCED_COLOR_2 : 3 채널, 1/2 크기, BGR 이미지 사용
cv2.IMREAD_REDUCED_COLOR_4 : 3 채널, 1/4 크기, BGR 이미지 사용
cv2.IMREAD_REDUCED_COLOR_8 : 3 채널, 1/8 크기, BGR 이미지 사용
● cv2.imshow(winname, mat)
: OpenCV 라이브러리를 사용하여 이미지를 화면에 표시하는 함수이다.
이 함수를 사용하면 이미지를 윈도우에 표시할 수 있다.
▶ winname: 이미지를 표시할 윈도우의 이름입니다. 윈도우 이름은 문자열로 지정된다.
▶ mat: 표시할 이미지입니다. NumPy 배열로 표현된다.
● cv2.waitKey()
: 키 입력을 기다리는 대기 함수
- 인자 값으로 0 : 무한 대기 / ms(밀리세컨) 단위의 시간을 입력하면 해당 시간만큼 대기 (1000ms = 1초)
- waitKey의 리턴 값은 키보드로 입력한 키와 동일한 아스키코드 값
● cv2.destroyAllWindows()
: 열린 모든 창을 닫는다.
● height, width , channel = image.shape를 이용하여 해당 이미지의 높이, 너비, 채널의 값을 확인할 수 있다.