rendered paste body#pragma comment (lib,"ws2_32.lib")
#include <windows.h>
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
WSADATA wsadata;
int sock;
struct sockaddr_in server;
struct timeval tv;
fd_set readfds;
IplImage* frame = 0;
struct init
{
int header;
int width;
int height;
int origin;
};
struct image
{
int header;
int index;
int stl;
char buf[1150];
};
struct init initPack;
int main( int argc, char** argv )
{
WSAStartup(MAKEWORD(2, 2), &wsadata); //Installerar sockets för applikationen
sock = socket(AF_INET, SOCK_DGRAM, 0);
server.sin_addr.s_addr = inet_addr("192.168.5.199");
server.sin_port = htons(10);
server.sin_family = AF_INET;
tv.tv_sec = 1;
tv.tv_usec = 0;
CvCapture* capture = 0;
capture = cvCaptureFromCAM( argc == 2 ? argv[1][0] - '0' : 0 );
if( !capture )
{
fprintf(stderr,"Could not initialize capturing...\n");
return -1;
}
frame = cvQueryFrame( capture );
initPack.header = 'INIT';
initPack.width = frame->width;
initPack.height = frame->height;
initPack.origin = frame->origin;
while(true)
{
FD_ZERO(&readfds);
FD_SET(sock, &readfds);
select(sock+1, &readfds, NULL, NULL, &tv);
if(FD_ISSET(sock, &readfds))
{
//ACK has received
recvfrom(sock, (char*)&t, 4, 0, (struct sockaddr *) &server, (int*)sizeof(server));
break;
}
else
{
int s = sendto(sock, (char*)&initPack, sizeof(initPack), 0, (struct sockaddr *) &server, sizeof(server));
}
}
struct image imgData;
int img_size = frame->width*frame->height*3;
imgData.header = 'IMAG';
for(int k = 0; k < 10; k++)
{
frame = cvQueryFrame( capture );
if( !frame )
break;
for(int i = 0; i < img_size; i=i+initPack.width*3)
{
imgData.index = i;
imgData.stl = initPack.width*3;
memmove(imgData.buf, frame->imageData+i, imgData.stl);
int s = imgData.stl+(3*sizeof(int));
int cs = sendto(sock, (char*)&imgData, s, 0, (struct sockaddr *) &server, sizeof(server));
}
}
cvReleaseCapture( &capture );
return 0;
}