Pages: [1]   Go Down
Author Topic: Visual Studio 2008 - Face Tracking Arduino Pan-Tilt System Serial Comm. Problem  (Read 1768 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,

In my face tracking project I get errors about Tserial.
I used :

-Microsoft Windows 7 Ultimate SP1 32-Bit
-Microsoft Visual Studio 2008 Professional
-OpenCV2.3
-Tetraedre Serial Library(Tserial.h and Tserial.cpp)
-Arduino UNO R3
-Pan tilt mechanism
-Web Cam

errors ;

Code:
1>main.obj : error LNK2019: unresolved external symbol "public: void __thiscall Tserial::disconnect(void)" (?disconnect@Tserial@@QAEXXZ) referenced in function "int __cdecl _main(int,char const * *)" (?_main@@YAHHPAPBD@Z)
1>main.obj : error LNK2019: unresolved external symbol "public: int __thiscall Tserial::connect(char *,int,enum serial_parity)" (?connect@Tserial@@QAEHPADHW4serial_parity@@@Z) referenced in function "int __cdecl _main(int,char const * *)" (?_main@@YAHHPAPBD@Z)
1>main.obj : error LNK2019: unresolved external symbol "public: __thiscall Tserial::Tserial(void)" (??0Tserial@@QAE@XZ) referenced in function "int __cdecl _main(int,char const * *)" (?_main@@YAHHPAPBD@Z)
1>main.obj : error LNK2019: unresolved external symbol "public: __thiscall Tserial::~Tserial(void)" (??1Tserial@@QAE@XZ) referenced in function "public: void * __thiscall Tserial::`scalar deleting destructor'(unsigned int)" (??_GTserial@@QAEPAXI@Z)
1>main.obj : error LNK2019: unresolved external symbol "public: void __thiscall Tserial::sendChar(char)" (?sendChar@Tserial@@QAEXD@Z) referenced in function "void __cdecl detectAndDisplay(class cv::Mat)" (?detectAndDisplay@@YAXVMat@cv@@@Z)

I'm going crazy, Why I get this errors? Please give me an answer..

Thanks.

Code:
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

#include <iostream>
#include "Tserial.h"

using namespace std;
using namespace cv;

/** Function Headers */
void detectAndDisplay( Mat frame );

/** Global variables */
//-- Note, either copy these two files from opencv/data/haarscascades to your current folder, or change these locations
String face_cascade_name = "haarcascade_frontalface_alt.xml";
String eyes_cascade_name = "haarcascade_eye_tree_eyeglasses.xml";
CascadeClassifier face_cascade;
CascadeClassifier eyes_cascade;
string window_name = "Capture - Face detection ";

// Serial to Arduino global declarations
  int arduino_command;
  Tserial *arduino_com;
  short MSBLSB = 0;
  unsigned char MSB = 0;
  unsigned char LSB = 0;
// Serial to Arduino global declarations

int main( int argc, const char** argv )
{
  CvCapture* capture;
  Mat frame;

  // serial to Arduino setup
  arduino_com = new Tserial();
  if (arduino_com!=0) {
       arduino_com->connect("COM7", 57600, spNONE); }
  // serial to Arduino setup

  //-- 1. Load the cascades
  if( !face_cascade.load( face_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; };
  if( !eyes_cascade.load( eyes_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; };
 
  //-- 2. Read the video stream
  capture = cvCaptureFromCAM( 3 );
  if( capture )
  {
    while( true )
    {
      frame = cvQueryFrame( capture );
      //-- 3. Apply the classifier to the frame
      if( !frame.empty() )
       { detectAndDisplay( frame ); }
      else
       { printf(" --(!) No captured frame -- Break!"); break; }
     
      int c = waitKey(10);
      if( (char)c == 'c' ) { break; }
    }
  }
  // Serial to Arduino - shutdown
     arduino_com->disconnect();
     delete arduino_com;
     arduino_com = 0;
  // Serial to Arduino - shutdown
  return 0;
}

/**
 * @function detectAndDisplay
 */
void detectAndDisplay( Mat frame )
{
 
   std::vector<Rect> faces;
   Mat frame_gray;

   cvtColor( frame, frame_gray, CV_BGR2GRAY );
   equalizeHist( frame_gray, frame_gray );
   //-- Detect faces
   face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) );

   for( int i = 0; i < faces.size(); i++ )
    {
      Point center( faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5 );
      ellipse( frame, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 2, 8, 0 );
//  cout << "X:" << faces[i].x  <<  "  y:" << faces[i].y  << endl;

     // send X,Y of face center to serial com port
     // send X axis
// read least significant byte
     LSB = faces[i].x & 0xff;
     // read next significant byte
     MSB = (faces[i].x >> 8) & 0xff;
arduino_com->sendChar( MSB );
arduino_com->sendChar( LSB );

    // Send Y axis
LSB = faces[i].y & 0xff;
MSB = (faces[i].y >> 8) & 0xff;
arduino_com->sendChar( MSB );
arduino_com->sendChar( LSB );
// serial com port send

      Mat faceROI = frame_gray( faces[i] );
      std::vector<Rect> eyes;
    }

   //-- Show what you got
   imshow( window_name, frame );

}
Logged

Seattle, WA USA
Offline Offline
Brattain Member
*****
Karma: 644
Posts: 50452
Seattle, WA USA
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Did you have an Arduino-related question there, somewhere? This is NOT a Visual Studio forum.
Logged

Offline Offline
God Member
*****
Karma: 32
Posts: 830
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

The linker is telling you it can't find the lib that contains the Tserial functions/methods at link time. You will have to review your linker command options and ensure they include the path to the location of the missing library.

@PaulS: He/she is using an UnoR3. I think this qualifies as an "Arduino question".
Logged

WiFi shields/Yun too expensive? Embeddedcoolness.com is now selling the RFXduino nRF24L01+ <-> TCP/IP Linux gateway: Simpler, more affordable, and even more powerful wireless Internet connectivity for *all* your Arduino projects! (nRF24L01+ shield and dev board kits available too.)

Seattle, WA USA
Offline Offline
Brattain Member
*****
Karma: 644
Posts: 50452
Seattle, WA USA
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
I think this qualifies as an "Arduino question".
I'm pretty sure that that code won't run on an Arduino. The question was strictly about some code that is to run on a PC. That it's goal is to (eventually) talk to an Arduino is irrelevant. The question was not about why the code fails to talk to the Arduino, or why the Arduino fails to respond. Those would be legitimate questions.
Logged

Global Moderator
Dallas
Offline Offline
Shannon Member
*****
Karma: 210
Posts: 13039
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset


There.  Now it's on(-ish)-topic.   smiley-grin
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

The linker is telling you it can't find the lib that contains the Tserial functions/methods at link time. You will have to review your linker command options and ensure they include the path to the location of the missing library.


but Tserial has not a library. It has only .h and .cpp file.
Logged

Pages: [1]   Go Up
Jump to: