코드 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::이 모두 사라져서 코드가 간결해졌습니다.