#include <iostream>
#include "opencv2/opencv.hpp" //world 라이브러리
using namespace std;
using namespace cv;
int main() {
mat img = imread("sample.bmp"); //이미지 로드(.bmp, .jpg, .png...)
//이미지 로드 디버깅
if(img.empty()){
cerr << "Image load failed" << endl;
return -1;
}
//이미지 출력
imshow("Image", img);
//키입력으로 종료
waitKey();
destroyAllWindows();
}
Mat imread(Const String& filename, int flags=IMREAD_COLOR);
flag option
IMREAD_UNCHANGED // 영상속성 그대로 읽기
IMREAD_GRAYSCALE // 1채널 그레이스케일
IMREAD_COLOR // 3채널 BGR 컬러
bool imwrite(const String& filename, InputArray img, const std::vector<int>& params = std::vector<int>());
filename: 저장파일이름
img: 저장할 영상데이터 Mat객체
params: 파일저장옵션
void namedWindow(const String& winname, int flags=WINDOW_AUTOSIZE);
flag option
WINDOW_NORMAL //영상크기가 창에 맞게 지정됨
WINDOW_AUTOSIZE // 창 크기가 영상크기에 맞게 조정됨
WINDOW_OPENGL // OpenGL 지원
void destroyWindow(const String& winname);
void destroyAllWindows();
void moveWindow(const String& winname, int x, int y);
void resizeWindow(const String& winname, int width, int height);
윈도우가 WINDOW_NORMAL 속성으로 생성되어야 동작함.
void imshow(const String& winname, InputArray mat);
8-bit unsigned: 픽셀값읋 그대로 출력
16-bit unsigned or 32-bit integer: 픽셀값을 255로 나눠서 그레이스케일로 출력
32-bit(float) or 64-bit(double) floating-point: 픽셀값에 255를 곱해서 정수부분만 출력
사실살 waitKey()가 동작해야 영상이 창에 출력된다.
32-bit 이상부터는 영상이 원하는 형태로 출력되지 않을 수 있기 때문에 가급적 8-bit uchar 형태의 영상을 사용하는 것이 좋다.
int waitKey(int delay=0);
delay = 밀리초 단위 대기시간.(음수면 무한히 기다림)
반환값 = 눌린 키 값. 눌리지 않으면 -1
waitKey() 함수는 OpenCV 창이 하나라도 있어야 정상동작함
imshow() 호출 후에 waitKey() 함수를 호출해야 영상이 화면에 나타남
주요 특수키 코드
esc -> 27
enter -> 13
tab -> 9
vscode에서 코드에 마우스 클릭 후 f12 누르면 해당 코드가 정의되어있는 문서로 이동 가능.