#include <opencv2/core.hpp> // image 저장 시 사용되는 Mat class를 비롯, OpenCV에서 사용하는 기본적인 자료구조와 함수가 포함되어 있음
#include <opencv2/imgcodecs.hpp> // image file을 읽어오는 함수와 저장하는 함수를 포함
#include <opencv2/highgui.hpp> // 사용자의 입력을 받기 위해 대기하는 함수와 화면에 image를 보여주기 위한 함수가 포함되어 있음
//#include <opencv2/opencv.hpp> 하나만 include하는 방법도 있음
#include <iostream> // 입출력을 위한 C++ header file include
using namespace cv;
using namespace std;
/*
* OpenCV 와 C++ 표준 Library는 다행히 충돌이 나는 이름이 없기 때문에 using namespace를 사용해도 무방
* 이렇게 사용하는게 타이핑하는 양도 줄어들기 때문에 좋음
* 하지만 큰 프로젝트라면 주의 할 필요가 있음
* 다른 Library와 충돌이 나는 이름이 있을 수 있기 때문
*/
int main(void) {
Mat image; // 입력이미지를 저장할 Mat 객체 선언
image = imread("gomduri.png", IMREAD_COLOR); // imread 함수로 image를 읽고 return되는 Mat 객체를 변수에 대입
// IMREAD_UNCHANGED : alpha channel을 포함시킨 color image를 return
// IMREAD_COLOR : alpha channel이 없는 color image를 return
// IMREAD_GRAYSCALE : gray scale image로 변환하여 return
// IMREAD_ANYDEPTH
// IMREAD_ANYCOLOR
// IMREAD_LOAD_GDAL
// IMREAD_REDUCED_GRAYSCALE_2
// IMREAD_REDUCED_COLOR_2
// IMREAD_REDUCED_GRAYSCALE_4
// IMREAD_REDUCED_COLOR_4
// IMREAD_REDUCED_GRAYSCALE_8
// IMREAD_REDUCED_COLOR_8
// IMREAD_IGNORE_ORIENTATION
// empty() 함수는 객체가 비어있다면 1, 아니라면 0을 반환한다.
if (image.empty()) { // imread 함수로 읽은 Mat 객체가 비어있다면
cout << "Could not open or fine the image" << endl; // error message를 보여주고
return -1; // program을 종료한다.
}
namedWindow("Original", WINDOW_AUTOSIZE); // 생략가능
// "Original" : window 식별자이며 동시에 window title message
// WINDOW_AUTOSIZE : image 크기에 맞춰 window 크기가 정해진다. 크기고정
// WINDOW_NORMAL : image가 크다면 해상도에 맞춰 window 크기가 조정된다. 자유크기
/*
* WINDOW_FULLSCREEN : 전체화면
* setWindowProperty("Original", WND_PROP_FULLSCREEN, WINDOW_FULLSCREEN); 추가작성
*/
imshow("Original", image);
// first input : window 식별자
// second input : Mat 객체에 저장된 image
waitKey(0); // OpenCV 생성한 window가 활성화된 상태에서 keyboard 입력이 있을 때 까지 대기하도록 한다.
// 일정시간 동안만 대기하고싶게 만들 경우 0 말고 다른 숫자를 적어주면 된다. 단위는 millisecond 1/1,000
return 0;
}
댓글남기기