이미지 읽기
Mat imread(path, flag) 함수로 이미지를 읽을 수 있다.
자주 쓰는 플래그의 종류
IMREAD_UNCHANGED 파일에 저장된 그대로 가져온다. (alpha채널 포함) IMREAD_GRAYSCALE 그레이화된 이미지로 가져온다. IMREAD_COLOR alpha를 제외한 컬러채널만 가져온다. ...
샘플 이미지
example)
Mat img = imread("./opencv_logo.png", IMREAD_UNCHANGED);
//! img가 로딩되지 않았다면 익셉션 발생.
CV_Assert(img.data);
//! test라는 윈도우에 img 출력
imshow("test", img);
//! 곧바로 프로그램 종료하지 않기.
waitKey();
이미지 쓰기
bool imwrite(path, mat, params) 함수로 이미지를 쓸 수 있다.
path의 확장자 이름으로 파일포맷이 결정되며,
params는 vector<int> 타입으로써,
IMWRITE 상수와 그 설정값이 인접되게 push_back되어야 한다.
example)
Mat img = imread("./opencv_logo.png", IMREAD_UNCHANGED);
CV_Assert(img.data);
//! jpg 파일로 저장.
vector<int> jpg_params;
jpg_params.push_back(IMWRITE_JPEG_QUALITY);
jpg_params.push_back(50);
imwrite("./output.jpg", img, jpg_params);
//! png 파일로 저장.
vector<int> png_params;
png_params.push_back(IMWRITE_PNG_COMPRESSION);
png_params.push_back(9);
imwrite("./output.png", img, png_params);
RGB 이미지 채널
RGB는 각각 0~255이므로, 각 채널은 8비트로 표현된다.
즉, RGB 이미지를 표현하기 위해서는 CV_8UC3 타입으로 설정해야 한다.
명암만 필요하다면 CV_8UC1 타입이어야 하며,
알파도 필요하다면 CV_8UC4 타입이어야 한다.
아닌경우 오버플로우나 언더플로우 문제가 일어날 수 있다.
'# 미사용 > OpenCV' 카테고리의 다른 글
| [OpenCV] 기본도형 그리기 (0) | 2019.10.29 |
|---|---|
| [OpenCV] 윈도우 및 이벤트 관리 (0) | 2019.10.29 |
| [OpenCV] 벡터를 행렬로 변환 (0) | 2019.10.29 |
| [OpenCV] 행렬의 영역참조 (관심영역) (0) | 2019.10.29 |
| [OpenCV] 행렬의 생성 및 활용 (0) | 2019.10.29 |