4

私はOpenCV e VS2010が初めてです。私はwindows7 x64で作業しています。マーカーを検出したいので、このサイトから ARuco ライブラリをダウンロードし、次の簡単なコードを書きました。

#include <iostream>
#include <stdio.h>
#include "C:/Users/Cristina/Desktop/OpenCV/dep/aruco/src/aruco.h"
#include "C:/Users/Cristina/Desktop/OpenCV/dep/aruco/src/cvdrawingutils.h"
#include "C:/Users/Cristina/Desktop/OpenCV/dep/aruco/src/cameraparameters.hpp"
#include "C:/Users/Cristina/Desktop/OpenCV/opencv/include/opencv/cv.h"
#include "C:/Users/Cristina/Desktop/OpenCV/opencv/include/opencv/highgui.h"
#include "C:/Users/Cristina/Desktop/OpenCV/opencv/modules/imgproc/include/opencv2/imgproc/imgproc.hpp"
#include "C:/Users/Cristina/Desktop/OpenCV/opencv/modules/highgui/include/opencv2/highgui/highgui.hpp"
#include "C:/Users/Cristina/Desktop/OpenCV/opencv/modules/core/include/opencv2/core/core.hpp"

using namespace cv;
using namespace aruco;

int main() {

    aruco::CameraParameters CamParam;
    aruco::MarkerDetector MDetector;
    vector <Marker> Markers;
    cv::Mat img;

    img = imread("prova marker", 0);

    cv::namedWindow("originale", 1);
    cv::namedWindow("risultato", 1);

    cv::Mat risultato;

    img.copyTo(risultato);

    MDetector.detect(img, Markers, CamParam, -1);

    for (int i=0; i< Markers.size(); i++) {

        Markers[i].draw(risultato, Scalar(0,0, 255));
    }

    cv::imshow("originale", img);
    cv::imshow("risultato", risultato);
    waitKey(0);

return 0;
}

これをコンパイルすると、次のエラーが発生します。

1>main.obj : error LNK2019: riferimento al simbolo esterno "public: __thiscall aruco::MarkerDetector::~MarkerDetector(void)" (??1MarkerDetector@aruco@@QAE@XZ) non risolto nella funzione _main
1>main.obj : error LNK2019: riferimento al simbolo esterno "public: void __thiscall aruco::Marker::draw(class cv::Mat &,class cv::Scalar_<double>,int,bool)const " (?draw@Marker@aruco@@QBEXAAVMat@cv@@V?$Scalar_@N@4@H_N@Z) non risolto nella funzione _main
1>main.obj : error LNK2019: riferimento al simbolo esterno "public: void __thiscall aruco::MarkerDetector::detect(class cv::Mat const &,class std::vector<class aruco::Marker,class std::allocator<class aruco::Marker> > &,class aruco::CameraParameters,float,bool)" (?detect@MarkerDetector@aruco@@QAEXABVMat@cv@@AAV?$vector@VMarker@aruco@@V?$allocator@VMarker@aruco@@@std@@@std@@VCameraParameters@2@M_N@Z) non risolto nella funzione _main
1>main.obj : error LNK2019: riferimento al simbolo esterno "public: __thiscall aruco::CameraParameters::CameraParameters(class aruco::CameraParameters const &)" (??0CameraParameters@aruco@@QAE@ABV01@@Z) non risolto nella funzione _main
1>main.obj : error LNK2019: riferimento al simbolo esterno "public: __thiscall aruco::MarkerDetector::MarkerDetector(void)" (??0MarkerDetector@aruco@@QAE@XZ) non risolto nella funzione _main
1>main.obj : error LNK2019: riferimento al simbolo esterno "public: __thiscall aruco::CameraParameters::CameraParameters(void)" (??0CameraParameters@aruco@@QAE@XZ) non risolto nella funzione _main
1>C:\Users\Cristina\Desktop\OpenCV\Progetti\MIEI PROGETTI\aruco marker\Debug\aruco marker.exe : fatal error LNK1120: 6 esterni non risolti
========== Compilazione: 0 completate, 1 non riuscite, 0 aggiornate, 0 ignorate ==========

誰かが私を助けることができますか?ありがとう!

4

1 に答える 1

3

ライブラリをビルドするには、VisualStudioでArucoをコンパイルする必要があります。

その後、結果のlibファイルをVisualStudioの適切なライブラリフォルダーにコピーします。

最後に、プロジェクトのプロパティを編集し、リンカーの依存関係としてライブラリの名前を追加します。

于 2012-12-06T23:47:26.670 に答える