Это тестовая программа с opencv. Он не должен ничего делать.opensv namespaces и 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
, что даже не имеет кесарево эквивалентную функцию http://docs.opencv.org/2.4/modules/imgproc/doc/filtering.html?highlight=medianblur#medianblur
Я бегу на 3.1.0 OpenCV версии и убунту 16,04