這是一個使用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
沒有名稱空間聲明通過編譯。同去同medianBlur
,它甚至沒有一個等價的C函數 http://docs.opencv.org/2.4/modules/imgproc/doc/filtering.html?highlight=medianblur#medianblur
我在3.1.0版本OpenCV的運行和Ubuntu 16.04