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

您需要在 Visual Studio 上编译 Aruco 来构建库。

之后,将生成的 lib 文件复制到 Visual Studio 的正确库文件夹中。

最后,编辑项目的属性并将库的名称添加为链接器的依赖项。

于 2012-12-06T23:47:26.670 回答