Why do I get this error when using OpenCV? error: undefined reference to `cvCreateFileCapture'

Why do I get this error when using OpenCV? error: undefined reference to `cvCreateFileCapture'

我正在尝试 运行 使用 openCV 编写一个简单的代码,但我一直收到此错误。

error: undefined reference to `cvCreateFileCapture'

error: undefined reference to `cvQueryFrame'

error: undefined reference to `cvReleaseCapture'

据我所知,这些函数是在 'highgui' 组件中定义的,我将其 header 添加到我的代码中,并且还包括它到我的库路径的路径。

INCLUDEPATH += /usr/local/include/opencv
LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui

我成功使用了'highgui'组件的其他功能,没有任何错误。例如:'cvLoadImage' 此外,我的 IDE 的智能感知一直向我建议这些函数,我认为这意味着我已经正确地包含了库路径。

为什么会出现这些错误?

有关更多信息,我在 linux mint 17.2

上使用 openCV 3.0.0、Qt creator 3.1.1

我正在尝试 运行 的完整简单代码是:

#include <iostream>
#include <highgui.h>
#include <cv.h>

using namespace std;

int main()
{
    CvCapture* capture = cvCreateFileCapture("/home/ali/drop.avi");
    cvNamedWindow("t2",CV_WINDOW_AUTOSIZE);
    IplImage* frame;
    while(1) 
    {
        frame = cvQueryFrame(capture);
        if(!frame) break;
        cvShowImage("t2",frame);
        char c = cvWaitKey(33);
        if(c==27) break;
    }
    cvReleaseCapture(&capture);
    cvDestroyWindow("t2");

    return 0;
}

提前致谢。

您的 openCV 研究来源已过时。那就是老Capi。研究一些文档 here

编辑:此外,按照@berak 的建议使用 cv::Mat 和 cv::VideoCapture

<cv.h>替换为<opencv2/core.hpp>

在我的 openCV 安装中,我像这样包含了 highgui <opencv2/highgui.hpp>