0

openCV を使用して単純なコードを実行しようとしていますが、このエラーが発生し続けます。

エラー: `cvCreateFileCapture' への未定義の参照

エラー: `cvQueryFrame' への未定義の参照

エラー: `cvReleaseCapture' への未定義の参照

私が知る限り、これらの関数は「highgui」コンポーネントで定義されています。これは、コードのヘッダーであり、ライブラリ パスへのパスも含まれています。

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 クリエーター 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;
}

前もって感謝します。

4

1 に答える 1

0

あなたの openCV の学習ソースは古くなっています。それは古い C API です。ここでいくつかのドキュメントを調べてください

EDIT:また、@berakからのアドバイスに従って、cv::Matとcv::VideoCaptureを使用してください

<cv.h>と置き換えます<opencv2/core.hpp>

私のopenCVのインストールでは、このようにhighguiを含めます<opencv2/highgui.hpp>

于 2016-01-13T07:08:31.370 に答える