gpt4 book ai didi

sockets - 使用 opencv 和 socket 使用 tcp 进行流式传输

转载 作者:行者123 更新时间:2023-12-02 17:51:47 25 4
gpt4 key购买 nike

我已经完成了简单的 tcp 客户端/服务器程序,可以很好地处理字符串和字符数据...我想获取每个帧(来自网络摄像头)并将其发送到服务器..这是客户端程序中发生错误的部分:

line:66   if(send(sock, frame, sizeof(frame), 0)< 0)

错误:

client.cpp:66:39: error: cannot convert ‘cv::Mat’ to ‘const void*’ for argument ‘2’ to ‘ssize_t send(int, const void*, size_t, int)



我无法识别此错误....请帮助...以下完整的客户端程序:
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
#include<stdlib.h>
#include<netdb.h>
#include<unistd.h>
#include "opencv2/objdetect.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>

using namespace std;
using namespace cv;


int main(int argc,char *argv[])
{
int sock;
struct sockaddr_in server;
struct hostent *hp;
char buff[1024];
VideoCapture capture;
Mat frame;
capture.open( 1 );
if ( ! capture.isOpened() ) { printf("--(!)Error opening video capture\n"); return -1; }

begin:
capture.read(frame);

if( frame.empty() )
{
printf(" --(!) No captured frame -- Break!");
goto end;
}

sock=socket(AF_INET,SOCK_STREAM,0);
if(sock<0)
{
perror("socket failed");
exit(1);
}

server.sin_family =AF_INET;

hp= gethostbyname(argv[1]);
if(hp == 0)
{
perror("get hostname failed");
close(sock);
exit(1);
}

memcpy(&server.sin_addr,hp->h_addr,hp->h_length);
server.sin_port = htons(5000);

if(connect(sock,(struct sockaddr *) &server, sizeof(server))<0)
{
perror("connect failed");
close(sock);
exit(1);
}
int c = waitKey(30);
if( (char)c == 27 ) { goto end; }
if(send(sock, frame, sizeof(frame), 0)< 0)
{
perror("send failed");
close(sock);
exit(1);
}
goto begin;
end:
printf("sent\n",);
close(sock);

return 0;
}

最佳答案

因为 TCP 提供字节流,所以在通过 TCP 套接字发送内容之前,您必须编写要发送的确切字节。您对 sizeof 的使用是不正确的。 sizeof函数告诉您系统需要多少字节来存储特定类型。这与数据通过 TCP 连接所需的字节数无关,这取决于您正在实现的 TCP 之上的特定协议(protocol),该协议(protocol)必须指定如何在字节级别发送数据。

关于sockets - 使用 opencv 和 socket 使用 tcp 进行流式传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18940752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com