1

次の OpenCV プログラムを CodeBlocks または Linux ターミナルでコンパイルしたいと考えています。

http://plaza.ufl.edu/tyler727/imdl/src/eigenface.cpp

    line 57:   nTrainFaces = loadFaceImgArray("/home/hacker/data/Eigenfacecpp/train.txt");

    line 192: // load test images and ground truth for person number
             nTestFaces = loadFaceImgArray("/home/hacker/data/Eigenfacecpp/test.txt");

    // project the training images onto the PCA subspace
    projectedTrainFaceMat = cvCreateMat(nTrainFaces, nEigens, CV_32FC1);
    for(i=0; i<nTrainFaces; i++)
    {
        cvEigenDecomposite(faceImgArr[i],
                           nEigens,
                           eigenVectArr,
                           0, 0,
                           pAvgTrainImg,
line 78:                    projectedTrainFaceMat->data.fl + i*nEigens);
    }

     cvCalcEigenObjects(nTrainFaces,
                        (void*)faceImgArr,
                        (void*)eigenVectArr,
                        CV_EIGOBJ_NO_CALLBACK,
                        0,
                        0,
                        &calcLimit,
                        pAvgTrainImg,
line 154:                eigenValMat->data.fl);

        //project the test image onto the PCA subspace
        cvEigenDecomposite(faceImgArr[i],
                           nEigens,
                           eigenVectArr,
                           0, 0,
                           pAvgTrainImg,
line 211:                   projectedTestFace);

そして、私はそれらのエラーを得ました:

Compiling: eigenface.cpp

In Function »void learn()«:
line 57:  deprecated conversion from string constant to ‘char*’ [Wwrite-strings]

In Function »double recognize()«:
line 192: deprecated conversion from string constant to ‘char*’ [Wwrite-strings]

/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
obj/Debug/eigenface.o: In function `learn()':
/home/hacker/data/Eigenfacecpp/eigenface.cpp:78: undefined reference to `cvEigenDecomposite'

obj/Debug/eigenface.o: In function `doPCA()':
/home/hacker/data/Eigenfacecpp/eigenface.cpp:154: undefined reference to `cvCalcEigenObjects'

obj/Debug/eigenface.o: In function `recognize()':
/home/hacker/data/Eigenfacecpp/eigenface.cpp:211: undefined reference to `cvEigenDecomposite'

私は何が間違っていたのか理解できません。ばかげていると思いますが、見つかりません。

CodeBlocks からのコンパイラとデバッガの設定:

リンカー設定 -> その他のオプション: -lopencv_core -lopencv_objdetect -lopencv_imgproc-lopencv_highgui

検索ディレクトリ -> コンパイラ:/usr/local/include/opencv 検索ディレクトリ -> リンカ:/usr/lib

ここで私は何を間違えましたか?この問題で私を助けてください。

4

3 に答える 3

0

/usr/lib -name 'libopencv*.so' を見つけます | xargs readelf -s | egrep "FUNCTION_NAME|libop" find /usr/lib -name 'libopencv*.so' | xargs readelf -s | egrep "cvEigenDecomposite|libop"

ファイル: ./libopencv_legacy.so 680: 00000000000936f0 1046 FUNC GLOBAL DEFAULT 11 cvEigenDecomposite なので、'libopencv_legacy.so'
-lopencv_legacyとリンクします

于 2013-09-12T19:54:51.327 に答える
0

http://plaza.ufl.edu/tyler727/imdl/Lovelly_FCRAR12.pdfから参照 [3] および [4] を表示

于 2014-03-12T03:15:22.203 に答える