[OpenCV] 02. OpenCV, C++ 가장 기본적인 소스코드 구조와 세세한 설명 - 첫[;1]프로그래머

[OpenCV] 02. OpenCV, C++ 가장 기본적인 소스코드 구조와 세세한 설명 - 첫[;1]프로그래머

영상처리 ( Image Processing )을 처음 시작하는 초보자 ( Beginners ) 들은 프로젝트 생성부터 코드 작성, 컴파일 과정이 잘 이해가지 않으실 수 있습니다.

따라서, 소스코드가 기본적으로 어떻게 작동되는지에 대하여 설명하겠습니다.

먼저, 영상정보의 처리를 위해서는 영상데이터를 읽어와 처리된 결과를 다시 기록하는 작업이 가능해야 합니다.
픽셀의 집합으로 이루어진 영상데이터의 단위 픽셀값에 접근하는 것이 영상처리의 시작이 됩니다.

가장 간단한 영상처리 프로그램을 C++ 언어를 이용하여 작성해보겠습니다.
입력 영상의 역상을 구하는 프로그램으로 아래와 같습니다.



[ C++ Code ]

// OpenCV 를 사용하기 위해서 3개의 헤더파일을 include 합니다.
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>

// cout 을 사용하기 위해서 <iostream> 헤더파일을 include 합니다. 
// <iostream> 은 C++ 에서 입출력을 위한 헤더파일입니다. 
// 이는, C++ 표준 라이브러리의 하나이며, C 언어에서의 <stdio.h> 와 같은 역할을 합니다.
// using namespace std; 를 작성합니다.
#include <iostream>

// OpenCV 의 모든 함수와 클래스는 cv namespace 안에 있습니다.
// 모든 라인에 cv:: 을 쓰는 것을 막기 위해 namespace 를 작성합니다.
using namespace cv;

// #include <iostream>
using namespace std;

// argc ( Argument Count )는 argument의 수를 의미합니다. 
// argv ( Argument Vector )는 argument 가 char 형으로 저장이 되는 변수입니다.
// argv[0] 은 실행 파일 경로가 저장됩니다.
// argv[1], argv[2] … 에는 순서대로 사용자가 입력한 argument 가 저장 됩니다.
int main( int argc, char** argv )
{
    // Mat 객체를 생성하여 로드된 영상 데이터를 저장합니다.
    Mat image;

    // imread() : 영상을 읽어옵니다. 
    // IMREAD_COLOR라는 형식으로 파일명.파일확장자 영상을 읽어옵니다.
    image = imread( "파일명.파일확장자", IMREAD_COLOR );

    // 유효하지 않은 입력 영상에 대한 확인 과정입니다. 
    if( image.empty() )
    {
        cout << "이미지 파일을 찾을 수 없습니다." << std::endl ;
        return -1;
    }

    // namedWindow() : 영상을 화면에 보이게 하기 위해서 창을 생성합니다.
    // WINDOW_AUTOSIZE : 이미지의 크기에 따라 창의 크기가 결정됩니다.
    namedWindow( "창을 생성하였습니다.", WINDOW_AUTOSIZE );

    // imshow() : OpenCV 윈도우에 새로운 이미지를 업데이트 해줍니다.
    imshow( "OpenCV 창에 새로운 영상을 업데이트 하였습니다.", image );

    // waitKey : 사용자의 키보드 입력을 기다리는 함수 입니다.
    // 0 : 무한대를 의미합니다.
    // 사용자가 키보드를 입력하기 전까지 윈도우 창은 닫히지 않습니다.
    waitKey(0);

    return 0;
}


소스코드와 관련하여 궁금하신 점에 대해서 댓글 달아주시면 답변해드리겠습니다.


첫[;1]프로그래머. © 2020 chot1programmer. All rights reserved.
저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다.

댓글

이 블로그의 인기 게시물

[C언어] 01. Visual Studio 2019 설치 및 개발환경 설정, 프로젝트, 소스파일 (C파일) 생성 - 첫[;1]프로그래머

[디스플레이 용어] FHD, 2K, WQHD, UHD, 4K, 8K 해상도( Resolution ) 총정리 - 첫[;1]프로그래머