@@ -70,7 +70,12 @@ const char* cascade_name =
70
70
// static int init_flag = 0;
71
71
int sockfd, portno, n;
72
72
struct sockaddr_in serv_addr;
73
- char buffer[1024 ] = " hello dlx----------\n " ;
73
+ char bufferImage[1024 ] = " hello dlx----------\n " ;
74
+ char buffer[32 ];
75
+
76
+ char *serverWelcome = " welcome" ;
77
+ char *serverBye = " bye" ;
78
+
74
79
int face_main ()
75
80
{
76
81
CvCapture* capture = 0 ;
@@ -96,20 +101,14 @@ int face_main()
96
101
97
102
// portno = atoi(argv[2]);
98
103
portno = 9001 ;
99
- sockfd = socket (AF_INET, SOCK_STREAM, 0 );
100
- if (sockfd < 0 )
101
- printf (" ERROR opening socket\n " );
104
+
102
105
103
106
// bzero((char *) &serv_addr, sizeof(serv_addr));
104
107
memset (&serv_addr, 0 , sizeof (serv_addr));
105
108
serv_addr.sin_family = AF_INET;
106
109
serv_addr.sin_addr .s_addr = inet_addr (" 192.168.1.40" );
107
110
serv_addr.sin_port = htons (portno);
108
- if (connect (sockfd,(struct sockaddr *) &serv_addr,sizeof (serv_addr)) < 0 )
109
- perror (" ERROR connecting1\n " );
110
- memset (buffer, 0 , 1024 );
111
- // init_flag = 1;
112
- // }
111
+
113
112
114
113
115
114
cascade_name = " ./haarcascade_frontalface_alt2.xml" ;
@@ -307,25 +306,25 @@ int face_main()
307
306
void detect_and_draw ( IplImage* img ,IplImage* img_old,int minX,int minY)
308
307
{
309
308
static CvScalar colors = CV_RGB ( 255 , 0 , 0 );
310
- printf (" detect=++++++++++++++++++++++++++++++==\n " );
309
+ printf (" detect=++++++++++++++++++++++++++++++==\n " );
311
310
double scale = 1.3 ;
312
311
IplImage* gray = cvCreateImage ( cvSize (img->width ,img->height ), 8 , 1 );
313
312
IplImage* small_img = cvCreateImage ( cvSize ( cvRound (img->width /scale),cvRound (img->height /scale)),8 , 1 );
314
313
315
314
316
315
cvCvtColor ( img, gray, CV_BGR2GRAY );
317
- // dlx-----
318
- // cvSaveImage("/save_gray.bmp",gray);
319
- double t = (double )cvGetTickCount ();
320
- cvResize ( gray, small_img, CV_INTER_LINEAR );
321
- t = (double )cvGetTickCount () - t;
322
- printf ( " cvResize time = %gms\n " , t/((double )cvGetTickFrequency ()*1000 .) );
323
- t = (double )cvGetTickCount ();
324
- cvEqualizeHist ( small_img, small_img );
325
-
326
- t = (double )cvGetTickCount () - t;
327
- printf ( " cvEqualizeHist time = %gms\n " , t/((double )cvGetTickFrequency ()*1000 .) );
328
- printf (" detect=++++++++++++++++++++++++++++++==0.1\n " );
316
+ // dlx-----
317
+ // cvSaveImage("/save_gray.bmp",gray);
318
+ double t = (double )cvGetTickCount ();
319
+ cvResize ( gray, small_img, CV_INTER_LINEAR );
320
+ t = (double )cvGetTickCount () - t;
321
+ printf ( " cvResize time = %gms\n " , t/((double )cvGetTickFrequency ()*1000 .) );
322
+ t = (double )cvGetTickCount ();
323
+ cvEqualizeHist ( small_img, small_img );
324
+
325
+ t = (double )cvGetTickCount () - t;
326
+ printf ( " cvEqualizeHist time = %gms\n " , t/((double )cvGetTickFrequency ()*1000 .) );
327
+ printf (" detect=++++++++++++++++++++++++++++++==0.1\n " );
329
328
cvClearMemStorage ( storage );
330
329
if ( cascade )
331
330
{
@@ -346,39 +345,65 @@ void detect_and_draw( IplImage* img ,IplImage* img_old,int minX,int minY)
346
345
cvCircle ( img_old, center, radius, colors, 3 , 8 , 0 );
347
346
printf (" heloo------------------------------------people\n " );
348
347
348
+
349
349
// send the image to server
350
350
Mat ROI_mat = Mat (img);
351
351
Mat faceImg = ROI_mat (*r).clone ();
352
352
353
- portno = 9001 ;
354
- sockfd = socket (AF_INET, SOCK_STREAM, 0 );
355
- if (sockfd < 0 )
356
- printf (" ERROR opening socket\n " );
357
-
358
- // bzero((char *) &serv_addr, sizeof(serv_addr));
359
- memset (&serv_addr, 0 , sizeof (serv_addr));
360
- serv_addr.sin_family = AF_INET;
361
- serv_addr.sin_addr .s_addr = inet_addr (" 192.168.1.40" );
362
- serv_addr.sin_port = htons (portno);
363
- if (connect (sockfd,(struct sockaddr *) &serv_addr,sizeof (serv_addr)) < 0 )
364
- perror (" ERROR connecting1\n " );
365
- memset (buffer, 0 , 1024 );
366
-
367
- sprintf (buffer," rows=%d , cols=%d , image.total()=%d \n " ,faceImg.rows ,faceImg.cols ,faceImg.total ());
368
- faceImg = (faceImg.reshape (0 ,1 ));
353
+ sprintf (bufferImage," rows=%d , cols=%d , image.total()=%d \n " ,faceImg.rows ,faceImg.cols ,faceImg.total ());
354
+ faceImg = (faceImg.reshape (0 ,1 ));
355
+
356
+ portno = 9001 ;
357
+ sockfd = socket (AF_INET, SOCK_STREAM, 0 );
358
+ if (sockfd < 0 )
359
+ printf (" ERROR opening socket\n " );
360
+
361
+ // bzero((char *) &serv_addr, sizeof(serv_addr));
362
+ memset (&serv_addr, 0 , sizeof (serv_addr));
363
+ serv_addr.sin_family = AF_INET;
364
+ serv_addr.sin_addr .s_addr = inet_addr (" 192.168.1.40" );
365
+ serv_addr.sin_port = htons (portno);
366
+ if (connect (sockfd,(struct sockaddr *) &serv_addr,sizeof (serv_addr)) < 0 )
367
+ perror (" ERROR connecting1\n " );
368
+
369
+
370
+ printf (" socket fd=%d\n " ,sockfd);
371
+
372
+ bzero (buffer,32 );
373
+ n = recv (sockfd,buffer,8 ,0 );// server welcome
374
+ printf (" recv n =%d\n " ,n);
375
+ if (0 == strcmp (serverWelcome,buffer))
376
+ {
377
+ printf (" recv server hello\n " );
378
+ printf (buffer);
379
+ bzero (buffer,32 );
380
+ }else {
381
+ close (sockfd);
382
+ break ;
383
+ }
384
+
369
385
printf (" rows =%d , cols = %d ,image.total() = %d \n " ,faceImg.rows ,faceImg.cols ,faceImg.total ());
370
- printf (" sockfd = %d \n " ,sockfd);
371
- n = send (sockfd,buffer,strlen (buffer),0 );
372
- printf (" send n =%d\n " ,n);
373
- if (n < 0 )
374
- perror (" ERROR writing to socket" );
375
-
376
- n = send (sockfd,faceImg.data ,faceImg.total ()*faceImg.elemSize (),0 );
377
- if (n < 0 )
386
+ // n = send(sockfd,image.data,image.total()*image.channels(),0);
387
+ n = send (sockfd,bufferImage,strlen (bufferImage),0 );
388
+ printf (" send n =%d\n " ,n);
389
+ if (n < 0 )
390
+ perror (" ERROR writing to socket" );
391
+
392
+ n = send (sockfd,faceImg.data ,faceImg.total ()*faceImg.elemSize (),0 );
393
+ printf (" send n =%d\n " ,n);
394
+ if (n < 0 )
378
395
perror (" ERROR writing to socket" );
379
- printf (" send n =%d\n " ,n);
380
-
381
- close (sockfd);
396
+ // char byeBuffer[5] = "bye";
397
+ n = recv (sockfd,buffer,4 ,0 );
398
+ if (0 == strcmp (serverBye,buffer))
399
+ {
400
+ printf (" recv server bye\n " );
401
+ printf (buffer);
402
+ }else {
403
+ close (sockfd);
404
+ break ;
405
+ }
406
+ close (sockfd);
382
407
383
408
}
384
409
printf (" detect=++++++++++++++++++++++++++++++1\n " );
0 commit comments