이미지 읽기
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 |