Я новичок в OpenCV и 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 ==========
Кто-нибудь может мне помочь?
Спасибо!
Вам нужно скомпилировать Aruco в Visual Studio, чтобы собрать библиотеки.
После этого скопируйте полученные файлы lib в соответствующую папку библиотеки Visual Studio.
Наконец, отредактируйте свойства вашего проекта и добавьте имя библиотеки в качестве зависимости компоновщика.
Других решений пока нет …