OpenCV 영상 불러와서 출력하기 &주요함수정리

전종원·2022년 10월 14일
0
post-thumbnail

1. 미리 준비되어있어야 할 것들

  • 설치된 개발 툴(vscode)
  • cmake설치 및 프로젝트 생성
  • openCV 설치 및 프로젝트 연동

2. OpenCV C++를 통해 영상을 불러와 출력하는 기본코드

#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();
}

3. OpenCV 주요함수설명

영상파일 불러오기

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

4. 팁

vscode에서 코드에 마우스 클릭 후 f12 누르면 해당 코드가 정의되어있는 문서로 이동 가능.

0개의 댓글