2012-03-31 2 views
0

Я пытаюсь построить этот кодНе удается построить OpenCV файл

#include "stdafx.h" 
#include <iostream> 

#include <math.h> 
#include "opencv2/core/core_c.h" 
#include "opencv2/core/core.hpp" 
#include "opencv2/imgproc/imgproc_c.h" 
#include "opencv2/imgproc/imgproc.hpp" 
#include "opencv2/highgui/highgui_c.h" 
#include "opencv2/highgui/highgui.hpp" 

using namespace std; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    int pixel; 

    Mat matC1_32S; 

    return 0; 
} 

и я получаю сообщение об ошибке:

1>c:\test1\test1\test1.cpp(21): error C2065: 'Mat' : undeclared identifier 
1>c:\test1\test1\test1.cpp(21): error C2146: syntax error : missing ';' before identifier 'matC1_32S' 
1>c:\test1\test1\test1.cpp(21): error C2065: 'matC1_32S' : undeclared identifier 

Какие дополнительные включает в себя я должен иметь? или что-то еще?

+1

с использованием пространства имен резюме;.. Или резюме :: Mat мат; – Sam

ответ

3

Вы не предоставляете пространство имен для Mat. Это будет работать, если вы ссылку на библиотеки OpenCV при компиляции:

#include "stdafx.h" 
#include <iostream> 

#include <math.h> 
#include "opencv2/core/core.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 
#include "opencv2/highgui/highgui.hpp" 

using namespace std; 
int _tmain(int argc, _TCHAR* argv[]) { 
    int pixel; 

    cv::Mat matC1_32S; 

    return 0; 
} 

Или вы можете добавить using namespace cv;, прежде чем _tmain, так что вы не должны предварять каждый вид.

Кроме того, вы преувеличиваете утверждения #include. Вам не нужны файлы * _c.h. (Может быть, вы добавили те, когда вы пытаетесь понять, почему Mat не была объявлена.)

0

Спасибо за помощь, но чтобы заставить его работать, я на самом деле был также включить следующую

#ifdef _DEBUG 
    #pragma comment(lib, "opencv_core231d.lib") 
    #pragma comment(lib, "opencv_highgui231d.lib") 
    #pragma comment(lib, "opencv_imgproc231d") 
    #pragma comment(lib, "opencv_objdetect231d.lib") 

#else 
    #pragma comment(lib, "opencv_core231.lib") 
    #pragma comment(lib, "opencv_highgui231.lib") 
    #pragma comment(lib, "opencv_imgproc231.lib") 
    #pragma comment(lib, "opencv_objdetect231.lib") 

#endif 

I понять, зачем мне нужно использовать пространство имен cv, но зачем мне это нужно с помощью прагмы, несмотря на то, что я предоставил путь к библиотеке в свойствах проекта. (Использую VisualStudio 10

+0

ошибки, которые вы показали ошибка компиляции , добавив, что 'using namespace cv' будет их исправлять (хотя я бы предложил 'cv :: Mat' вместо 'using namespace cv'). Missing '#pragma comment (lib, "opencv_core231.lib")' - это другая проблема, вы предоставили пути к компоновщику, но компоновщик до сих пор не имеет представления о том, к какой библиотеке нужно подключиться. Вы должны указать это явно. Вы также можете сделать это, добавив библиотеки в ** проект. Свойства конфигурации -> Linker -> Input -> Дополнительные зависимости ** в VisualStudio 10. – cxyzs7

+0

Большое спасибо за вашу помощь –

0

вы должны пойти в properties >> C/C++ >> Avanced >> Compile As и выбрать Compile as C++ code /TP Я сделал это Он работает

Смежные вопросы