OpenCV에서 주로 다루는 이미지 형식 : JPG, PNG 등의 래스터 그래픽스 이미지 파일 포맷
래스터 그래픽스 : 비트맵 이미지를 뜻하며, 격자판의 형태로 각 격자마다 화소의 데이터가 담겨있는 이미지 파일 포맷
OpenCV는 래스터 그래픽스 이미지 파일 포맷을 쉽게 불러올 수 있는 별도의 함수를 제공
-> 불러온 압축 해제된 이미지 데이터 구조에 필요한 메모리 할당과 같은 복잡한 작업을 처리하며, 파일 시그니처를 읽어 적절한 코덱을 결정
파일 시그니처 : 파일 매직 넘버(File magic number) 라고도 하며, 이미지를 불러올 때는 확장자를 확인하는 방식이 아닌 파일 시그니처를 읽어 파일의 포맷을 분석함.
ex) PNG 확장자의 경우 89 50 4E 47… 형태로 파일 헤더에 포함되어 있음
cv2.imread(
fileName,
flags = cv2.IMREAD_COLOR
)
<이미지 입력 함수>
이미지 입력 함수는 파일시스템에서 이미지를 응용 프로그램으로 가져옴
파일명(filename) : 경로를 포함한 입력 파일의 이름, 절대경로나 상대경로로 입력
플래그(flags) : 입력된 파일을 어떻게 해석할지 결정
-> 기본값을 색상값으로 가짐. 기본 플래그는 8비트, 3채널, BGR 이미지로 불러오게 되어있음. (height, width, 3), np.uint8과 동일한 의미. 플래그 매개변수는 이미지를 불러올 때 이미지의 정밀도와 채널을 설정함.
Python OpenCV 에서는 이미지가 존재하지 않아도 오류가 발생하지 않음.
올바르지 않은 이미지 경로를 입력한다면 반환값은 None이 됨.
색상 이미지를 디코딩한 경우 BGR 순서로 저장.
그레이스케일을 적용하는 인수는 코덱의 내부 그레이스케일 변환을 따름.
import cv2
src = cv2.imread("E:\OpenCV\example\images\OpenCV_Logo.png", cv2.IMREAD_GRAYSCALE)
print(src.ndim, src.shape, src.dtype)
<이미지 입력>
2 (739, 600) uint8
cv2.imread() 함수를 이용해 OpenCV_Logo.png 이미지에 cv2.IMREAD_GRAYSCALE 플래그를 적용해 반환한 예. 이미지 입력에서부터 그레이스케일이 적용되어 차원수는 2로 표시되며 이미지의 크기는 변경하지 않았으므로 원본 이미지의 크기 그대로를 사용. 또한 이미지는 기본적으로 uint8 형식을 가짐.
이미지에 EXIF 정보가 포함돼 있다면 EXIF에 담긴 회전 정보와 동일하게 이미지가 회전됨 -> 회전 정보를 사용하지 않는다면 EXIF 정보를 무시하는 플래그 사용. 만약 EXIF 정보가 포함된 이미지에서 내부 코덱의 그레이스케일을 적용하고 회전하지 않는다면 플래그 혼합 지정.
EXIF : 교환 이미지 파일 형식, 사진에 대한 정보를 포함하는 메타데이터를 추가
JPEG 2000, PNG, GIF 파일에선 지원되지 않음
cv2.IMREAD_IGNORE_ORIENTATION | cv2.IMREAD_GRAYSCALE
<그레이스케일 적용하되 회전X>
'영상처리 > OpenCV' 카테고리의 다른 글
마우스 콜백 (0) | 2022.06.07 |
---|---|
이미지 출력 (0) | 2022.06.07 |
ndarray 클래스 - 관심채널 (0) | 2022.06.07 |
ndarray 클래스 - 관심영역 (0) | 2022.06.07 |
matrix 클래스 (0) | 2022.06.07 |