Cześć! Od niedawna uczę się programowania w OpenCV 2.4.9 (z różnych poradników) i napotkałem na taki oto problem, z którym nie mogę sobie poradzić. Jestem teraz na etapie rozpoznawania twarzy, jednak nie mogę odpalić żadnych programów z tym związanych, dlatego podejrzewam, że może to być problem z kaskadami. Dla przykładowego programu z tutorialu:
#include <opencv2/core/core.hpp> //Sposób
#include <opencv2/highgui/highgui.hpp> //dokładny
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <string>
#include <iostream>
using namespace cv;
using namespace std;
string face_cascade_name = "haarcascade_frontalface_alt.xml"; //Nazwa kaskady którą wykorzystujemy do rozpoznania twarzy
CascadeClassifier face_cascade; //Utworzenie obiektu cascady twarzy
string window_name = "Hello Face !";
const string img_name = "cotillard.jpg";
void detectFace( Mat img );
int main( int argc, char** argv )
{
Mat img; //Utworzenie nowej macierzy na nasz obrazek
img = imread( img_name ); //Wczytanie obrazka z dysku
if ( !img.data ) //Sprawdzenie czy ładowanie obrazka przebiegło pomyslnie
{
cout << "Nie znaleziono pliku " << img_name << ".";
return -1;
}
if( !face_cascade.load( face_cascade_name ) ) //Ładowanie pliku ze sprawdzeniem poprawnoci
{
cout << "Nie znaleziono pliku " << face_cascade_name << ".";
return -2;
}
namedWindow(window_name, CV_WINDOW_AUTOSIZE); //Utworzenie okna (nazwa okna, ustalenie rozmiaru)
detectFace(img);
waitKey(0); //Odczekanie na wcisnięce klawisza z opóźnieniem 0ms
return 0;
}
void detectFace( Mat img )
{
vector<Rect> faces; //Utworzenie bufora na twarze
Mat img_gray; //Utworzenie bufora na obrazek w odcieniach szarosci
cvtColor(img, img_gray, CV_BGR2GRAY ); //Konwersja obrazu do odcieni szarosci
//equalizeHist(img_gray, img_gray); //Zaaplikowanie do obrazu jego historogramu, poprawa kontrastu
face_cascade.detectMultiScale(img_gray, faces, 1.1, 3, 0|CV_HAAR_SCALE_IMAGE, Size(50, 50) );
for( unsigned i = 0; i < faces.size(); i++ )
{
Rect rect_face( faces[i] ); //Kwadrat okreslający twarz
//ellipse( img, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 120, 12 ), 2, 2, 0 );
rectangle(img, rect_face, Scalar( 120, 5, 86 ), 2, 2, 0 );
}
imshow(window_name, img); //Pokazanie obrazka w oknmie o nazwie "Hello Face !"
}
Wyskakują mi takie błędy:
-
Error 1 error LNK2019: unresolved external symbol "public: __thiscall cv::CascadeClassifier(void)" (??0CascadeClassifier@cv@@QAE@XZ) referenced in function "void __cdecl `dynamic initializer for 'face_cascade''(void)" (??__Eface_cascade@@YAXXZ) C:\Users\MICHAŁ\Documents\Projekt\ConsoleApplication3\ConsoleApplication3\main.obj ConsoleApplication3
-
Error 2 error LNK2019: unresolved external symbol "public: virtual __thiscall cv::~CascadeClassifier(void)" (??1CascadeClassifier@cv@@UAE@XZ) referenced in function "void __cdecl `dynamic atexit destructor for 'face_cascade''(void)" (??__Fface_cascade@@YAXXZ) C:\Users\MICHAŁ\Documents\Projekt\ConsoleApplication3\ConsoleApplication3\main.obj ConsoleApplication3
-
Error 3 error LNK2019: unresolved external symbol "public: bool __thiscall cv::load(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?load@CascadeClassifier@cv@@QAE_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function _main C:\Users\MICHAŁ\Documents\Projekt\ConsoleApplication3\ConsoleApplication3\main.obj ConsoleApplication3
-
Error 4 error LNK2019: unresolved external symbol "public: virtual void thiscall cv::detectMultiScale(class cv::Mat const &,class std::vector<class cv::Rect<int>,class std::allocator<class cv::Rect<int> > > &,double,int,int,class cv::Size_<int>,class cv::Size_<int>)" (?detectMultiScale@CascadeClassifier@cv@@UAEXABVMat@2@AAV?$vector@V?$Rect_@H@cv@@V?$allocator@V?$Rect_@H@cv@@@std@@@std@@NHHV?$Size_@H@2@2@Z) referenced in function "void __cdecl detectFace(class cv::Mat)" (?detectFace@@YAXVMat@cv@@@Z) C:\Users\MICHAŁ\Documents\Projekt\ConsoleApplication3\ConsoleApplication3\main.obj ConsoleApplication3
-
Error 5 error LNK1120: 4 unresolved externals C:\Users\MICHAŁ\Documents\Projekt\ConsoleApplication3\Debug\ConsoleApplication3.exe ConsoleApplication3
Szukałem w internecie odnośnie błędu "unresolved external symbol", ale nie potrafię rozpoznać z czym jest tutaj problem. Może ma to związek z bibliotekami? Coś z nimi nie tak?
Z góry dziękuję za pomoc :)