rendered paste body#pragma comment (lib,"ws2_32.lib")
#include <windows.h>
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <time.h>
#include <fstream>
struct init
{
int header;
int width;
int height;
int origin;
};
struct image
{
int header;
int index;
int stl;
char buf[1150];
};
int ack = 'ACK ';
int keep = 'KEEP';
int recvv = 0;
WSADATA wsadata;
int sock;
struct sockaddr_in server;
struct sockaddr_in client;
int clientlen = 0;
struct init initData;
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 = INADDR_ANY;
server.sin_port = htons(10);
server.sin_family = AF_INET;
bind(sock,(struct sockaddr *)&server, sizeof(server));
clientlen = sizeof(client);
while(true)
{
recvv = recvfrom(sock, (char*)&initData, 16, 0, (struct sockaddr *) &client, &clientlen);
if(initData.header == 'INIT')
{
break;
}
if(recvv == -1)
{
continue;
}
sendto(sock, (char*)&ack, 4, 0, (struct sockaddr *) &client, sizeof(client));
}
cvNamedWindow( "Webcam", 1 ); //1 ifall fönstret inte ska kunna resizas
IplImage* frame = 0;
frame = cvCreateImage(cvSize(initData.width, initData.height), 8, 3);
struct image imgData;
int previndex = 0;
while(true)
{
recvv = recvfrom(sock, (char*)&imgData, sizeof(imgData), 0, (struct sockaddr *) &client, &clientlen);
int cs = sendto(sock, (char*)&keep, sizeof(keep), 0, (struct sockaddr *) &client, sizeof(client));
if(imgData.header != 'IMAG')
{
continue;
}
if(!frame)
{
break;
}
if(previndex > imgData.index)
{
frame->origin = initData.origin;
cvShowImage( "Webcam", frame );
int c = cvWaitKey(1);
if(c == 27)
break;
}
previndex = imgData.index;
memmove(frame->imageData+imgData.index, imgData.buf, imgData.stl);
}
cvReleaseImage(&frame);
cvDestroyWindow("Webcam");
return 0;
}