46 lines
1.2 KiB
C++
46 lines
1.2 KiB
C++
#include <opencv2/videoio.hpp>
|
|
#include <cstring>
|
|
#include <iostream>
|
|
#include <netinet/in.h>
|
|
#include <sys/socket.h>
|
|
#include <unistd.h>
|
|
#include <packets/ImagePacket.h>
|
|
|
|
using namespace std;
|
|
|
|
int main() {
|
|
cv::VideoCapture cap = cv::VideoCapture(0);
|
|
|
|
int clientSocket = socket(AF_INET, SOCK_STREAM, 0);
|
|
|
|
// specifying address
|
|
sockaddr_in serverAddress;
|
|
serverAddress.sin_family = AF_INET;
|
|
serverAddress.sin_port = htons(8080);
|
|
serverAddress.sin_addr.s_addr = INADDR_ANY;
|
|
|
|
cv::Mat image = cv::Mat::zeros(cv::Size(640, 480), CV_8UC3);
|
|
ImagePacket packet = ImagePacket(&image, 0);
|
|
|
|
// sending connection request
|
|
connect(clientSocket, (struct sockaddr*)&serverAddress,
|
|
sizeof(serverAddress));
|
|
|
|
unsigned long pos = 0;
|
|
unsigned long len = image.total() * image.elemSize();
|
|
char buffer[IMAGEPACKET_SIZE];
|
|
|
|
cout << "Image length " << len << endl;
|
|
|
|
while (true) {
|
|
cap.read(image);
|
|
packet = ImagePacket(&image, pos);
|
|
packet.serialize(buffer);
|
|
send(clientSocket, buffer, sizeof(buffer), 0);
|
|
cout << "Sent packet with index " << pos << endl;
|
|
pos = (pos + SLICE_SIZE) % len;
|
|
}
|
|
|
|
close(clientSocket);
|
|
return 0;
|
|
} |