이것은 opencv가있는 테스트 프로그램입니다. 아무것도하지 않아야합니다.opencv 네임 스페이스 및 c, C++ 함수
#include <opencv2/opencv.hpp>
int main(){
cv::Mat src;
Mat dst; // <---- compile error (Mat not declared, suggested alternatives cv::)
cvNamedWindow("A", CV_WINDOW_AUTOSIZE);
cv::namedWindow("B", CV_WINDOW_AUTOSIZE);
medianBlur(src,dst,3);
imshow("A",src);
cv::imshow("B", src);
}
나는 cmake와 컴파일하고
cmake_minimum_required(VERSION 2.8)
project(opencvtest)
find_package(OpenCV REQUIRED)
add_executable(opencvtest main.cpp)
target_link_libraries(opencvtest ${OpenCV_LIBS})
Cmake이 제대로 실행합니다. 코드에서 볼 수 있듯이 프로그램은 Mat dst
선언 없이는 정상적으로 처리됩니다. 이제 cvNamedWindow
은 C 함수이므로 네임 스페이스가 필요하지 않습니다. 반면에 imshow
은 C++ 함수이므로 네임 스페이스 선언이 필요합니다. http://docs.opencv.org/2.4/modules/highgui/doc/user_interface.html#imshow 그래서 왜 imshow
네임 스페이스 선언없이 컴파일이 이루어집니다. 동일조차 때문에 Argument-Dependent lookup (ADL)의의 제왕 해당 기능 http://docs.opencv.org/2.4/modules/imgproc/doc/filtering.html?highlight=medianblur#medianblur
나는 3.1.0 OpenCV의 버전을 실행하고 우분투 16.04