All pastes #778197 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-11-17 12:02 UTC
rendered paste body
#pragma comment (lib,"ws2_32.lib")
#include <windows.h>
#include "cv.h"
#include "highgui.h"
#include <stdio.h>

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, IPPROTO_UDP);

	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);
		printf("d%d\n", WSAGetLastError());

		if(initData.header == 'INIT')
		{
			break;
		}
		if(recvv == -1)
		{
			continue;
		}

		sendto(sock, (char*)&ack, 4, 0, (struct sockaddr *) &client, sizeof(client));
		printf("s%d\n", WSAGetLastError());
	}


	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");
	system("PAUSE");

    return 0;
}