使用OpenCV时为什么会出现此错误?错误:未定义引用`cvCreateFileCapture'

时间:2016-01-13 03:53:08

标签: c++ qt opencv highgui

我试图使用openCV运行一个简单的代码,但我一直收到这个错误。

  

错误:未定义对`cvCreateFileCapture'

的引用      

错误:未定义对`cvQueryFrame'

的引用      

错误:未定义对`cvReleaseCapture'

的引用

据我所知,这些功能是在' highgui'中定义的。我将代码包含在我的代码中的组件,还包含了我的库路径的路径。

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

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

为什么我会收到这些错误?

了解更多信息我在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;
}

提前谢谢。

1 个答案:

答案 0 :(得分:0)

您对openCV的研究来源已过时。那是旧的C api。研究一些文档here

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

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

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