我在visual studio 2010 windows form application c ++中使用opencv。但它不会允许调用内置函数。它会出现像
这样的错误错误1错误C3861:'cvCvtColor':找不到标识符c:\ users \ ayesha \ documents \ visual studio 2010 \ projects \ abc \ abc \ Form1.h 140 1 abc
错误2错误C3861:'cvCvtPixToPlane':找不到标识符c:\ users \ ayesha \ documents \ visual studio 2010 \ projects \ abc \ abc \ Form1.h 146 1 abc
我添加了以下标题
#include "highgui.h"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
任何人都可以告诉我我做错了什么。
答案 0 :(得分:3)
不幸的是,OP并没有说出他使用的OpenCV版本。
使用OpenCV 3.0时,请使用cvSplit()
代替cvCvtPixToPlane()
。
cvCvtColor()
适用于OpenCV 3.0,只要您向项目添加了必需的头文件。
最后,为了确保您不会错过项目中的所有必需文件,只需使用#include <opencv2\opencv.hpp>
启动您的代码。
答案 1 :(得分:0)
cvCvtColor
是OpenCV的C API函数,但您打算使用C ++函数。您有两种方法可以解决问题:
1)(推荐)更改源代码以使用C ++ API。您应该使用cv::Mat
代替CvArr
,cv::cvtColor
代替cvCvtColor
等。
2)由于源代码中的这些更改非常复杂,您仍然可以通过包含C-header来使用C API
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/core/core_c.h"
#include "opencv2/highgui/highgui_c.h"
而不是C ++(* .hpp)
答案 2 :(得分:0)
您提到的错误是我想的链接器错误。 因为你要包含两个标题highgui.hpp和highgui.h,目标是一个相同的opencv_highgui23#库。 只包括一个标题。