0

我正在将 opencv 与 Visual Studio 2010 Windows 窗体应用程序 C++ 一起使用。但它不允许调用内置函数。它给出了类似的错误

错误 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"

谁能告诉我我做错了什么。

4

3 回答 3

3

不幸的是,OP 没有说明他使用的是什么版本的 OpenCV。

使用 OpenCV 3.0 时,请cvSplit()使用cvCvtPixToPlane().

cvCvtColor()应与 OpenCV 3.0 一起使用,前提是您将所需的头文件添加到您的项目中。

最后,为了确保您不会错过项目中的任何必需文件,只需使用#include <opencv2\opencv.hpp>.

于 2015-09-06T10:54:40.777 回答
0

cvCvtColor是 OpenCV 的 C API 函数,但您打算使用 C++ 函数。您有两种解决问题的方法:

1)(推荐)更改您的源代码以使用 C++ API。您应该使用cv::Mat而不是CvArrcv::cvtColor而不是cvCvtColor等。

2) 由于源代码中的此类更改可能非常复杂,因此您仍然可以通过包含 C-headers 来使用 C API

#include "opencv2/imgproc/imgproc_c.h" 
#include "opencv2/core/core_c.h"      
#include "opencv2/highgui/highgui_c.h"

而不是 C++ (*.hpp) 的

于 2013-10-16T10:39:37.033 回答
0

您提到的错误是我想的链接器错误。当您包含两个标头 highgui.hpp 和 highgui.h 时,它们将指向一个相同的库,即 opencv_highgui23#。只包含一个标题。

于 2013-10-16T10:52:30.670 回答