Skip to content

Commit 351a752

Browse files
committed
face detectation mod for socket communication with the server
1 parent c9bf213 commit 351a752

File tree

1 file changed

+74
-49
lines changed

1 file changed

+74
-49
lines changed

mjpeg-streamer-182/mjpg-streamer/plugins/input_uvc/face_detection.cpp

+74-49
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,12 @@ const char* cascade_name =
7070
//static int init_flag = 0;
7171
int sockfd, portno, n;
7272
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+
7479
int face_main()
7580
{
7681
CvCapture* capture = 0;
@@ -96,20 +101,14 @@ int face_main()
96101

97102
//portno = atoi(argv[2]);
98103
portno = 9001;
99-
sockfd = socket(AF_INET, SOCK_STREAM, 0);
100-
if (sockfd < 0)
101-
printf("ERROR opening socket\n");
104+
102105

103106
//bzero((char *) &serv_addr, sizeof(serv_addr));
104107
memset(&serv_addr, 0, sizeof(serv_addr));
105108
serv_addr.sin_family = AF_INET;
106109
serv_addr.sin_addr.s_addr = inet_addr("192.168.1.40");
107110
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+
113112

114113

115114
cascade_name = "./haarcascade_frontalface_alt2.xml";
@@ -307,25 +306,25 @@ int face_main()
307306
void detect_and_draw( IplImage* img ,IplImage* img_old,int minX,int minY)
308307
{
309308
static CvScalar colors = CV_RGB( 255, 0, 0);
310-
printf("detect=++++++++++++++++++++++++++++++==\n");
309+
printf("detect=++++++++++++++++++++++++++++++==\n");
311310
double scale = 1.3;
312311
IplImage* gray = cvCreateImage( cvSize(img->width,img->height), 8, 1 );
313312
IplImage* small_img = cvCreateImage( cvSize( cvRound (img->width/scale),cvRound (img->height/scale)),8, 1 );
314313

315314

316315
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");
329328
cvClearMemStorage( storage );
330329
if( cascade )
331330
{
@@ -346,39 +345,65 @@ void detect_and_draw( IplImage* img ,IplImage* img_old,int minX,int minY)
346345
cvCircle( img_old, center, radius, colors, 3, 8, 0 );
347346
printf("heloo------------------------------------people\n");
348347

348+
349349
// send the image to server
350350
Mat ROI_mat = Mat(img);
351351
Mat faceImg = ROI_mat(*r).clone();
352352

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+
369385
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)
378395
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);
382407

383408
}
384409
printf("detect=++++++++++++++++++++++++++++++1\n");

0 commit comments

Comments
 (0)