我正在尝试构建这个代码
#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:test1test1test1.cpp(21): error C2065: 'Mat' : undeclared identifier
1>c:test1test1test1.cpp(21): error C2146: syntax error : missing ';' before identifier 'matC1_32S'
1>c:test1test1test1.cpp(21): error C2065: 'matC1_32S' : undeclared identifier
我应该有哪些附加内容?还是别的什么?
您没有为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;
}
或者,您可以在_tmain
之前添加using namespace cv;
,这样您就不必为每次出现做序。
此外,你的#include语句做得太过火了。您不需要*_c.h文件。(也许你在试图弄清楚为什么Mat没有被声明时添加了这些。)
谢谢你的帮助,但为了让它发挥作用,我实际上还必须包括以下
#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
我理解为什么我需要"using namespace cv",但为什么我需要带有pragma的这些东西,尽管我在项目属性中提供了库路径。(使用的是VisualStudio 10
您必须转到properties >> C/C++ >> Avanced >> Compile As
并选择Compile as C++ code /TP
我做到了。它有效。