#pragma comment (lib,"ws2_32.lib") #include #include "cv.h" #include "highgui.h" #include int width = 0; int height = 0; int size = 0; int origin = 0; WSADATA wsadata; int sock; int nysock; int sin_size; struct sockaddr_in sock_addr_my; struct sockaddr_in sock_addr_their; int main( int argc, char** argv ) { WSAStartup(MAKEWORD(2, 2), &wsadata); //Installerar sockets för applikationen sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); sock_addr_my.sin_addr.s_addr = INADDR_ANY; sock_addr_my.sin_port = htons(10); sock_addr_my.sin_family = AF_INET; bind(sock,(struct sockaddr *)&sock_addr_my, sizeof(sock_addr_my)); listen(sock, 5); sin_size = sizeof(sock_addr_their); nysock = accept(sock,(struct sockaddr *)&sock_addr_their, &sin_size); if(nysock == -1) { printf("Kunde inte upprätta anslutning"); return 0; } cvNamedWindow( "Webcam", 0 ); //1 ifall fönstret inte ska kunna resizas while(true) { IplImage* frame = 0; int c; int recvv = 0; size = 0; while(size == 0) { recvv = recv(nysock, (char*)&size, 4, 0); printf("stl: %d\n", recvv); } printf("size: %d\n", size); recvv = recv(nysock, (char*)&width, 4, 0); printf("stl: %d\n", recvv); recvv = recv(nysock, (char*)&height, 4, 0); printf("stl: %d\n", recvv); recvv = recv(nysock, (char*)&origin, 4, 0); printf("stl: %d\n", recvv); frame = cvCreateImage(cvSize(width, height), 8, 3); int counter = 0; while(counter < size) { recvv = recv(nysock, frame->imageData+counter, size-counter, 0); if(recvv <= 0) { printf("FEL!"); break; } else { counter += recvv; } printf("stl: %d\n", recvv); } printf("h: %d\n", height); printf("w: %d\n", width); printf("o: %d\n", origin); printf("%d\n", WSAGetLastError()); frame->origin = origin; printf("HEJ\n"); if( !frame ) break; printf("HEJ\n"); cvShowImage( "Webcam", frame ); printf("HEJ\n"); c = cvWaitKey(10); printf("HEJ\n"); if(c == 27) break; cvReleaseImage(&frame); } cvDestroyWindow("Webcam"); return 0; }