더북(TheBook)

코드 2-2에 사용된 다수의 OpenCV 함수와 Mat 클래스는 모두 cv 네임스페이스로 선언되어 있기 때문에 각각의 함수와 클래스 이름 앞에 cv::을 붙여서 코드가 작성되어 있습니다. 그러나 매번 cv::을 붙여서 코드를 작성하면 코드도 길어지고 타이핑도 번거로운 편입니다. 그러므로 소스 코드 맨 위에 using namespace cv; 문장을 추가하고, 실제 소스 코드에서는 cv::을 생략하는 것이 편리합니다. 더불어 STL 표준 입출력을 위한 std 네임스페이스도 using namespace std; 문장을 추가해서 사용하는 것이 편리합니다. 그러므로 코드 2-2의 소스 코드를 코드 2-3과 같이 변경하겠습니다. 코드 2-3은 내려받은 예제 파일 중 ch02/HelloCV 프로젝트에서 확인할 수 있습니다.

코드 2-3 using namespace 구문을 사용한 HelloCV 소스 코드 [ch02/HelloCV]

01    #include "opencv2/opencv.hpp"
02    #include <iostream>
03     
04    using namespace cv;
05    using namespace std;
06     
07    int main()
08    {
09        cout << "Hello OpenCV " << CV_VERSION << endl;
10     
11        Mat img;
12        img = imread("lenna.bmp");
13     
14        if (img.empty()) {
15            cerr << "Image load failed!" << endl;
16            return -1;
17        }
18     
19        namedWindow("image");
20        imshow("image", img);
21     
22        waitKey(0);
23        return 0;
24    }

 

4~5행 cv와 std 네임스페이스를 사용하도록 선언했습니다. 이로써 이후 소스 코드에서 cv::std::을 생략해도 됩니다.

7~24행 코드 2-2의 main() 함수와 내용은 같지만 cv::std::이 모두 사라져서 코드가 간결해졌습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.