C++ 使用C++;

C++ 使用C++;,c++,video-streaming,opencv3.0,C++,Video Streaming,Opencv3.0,我目前正在一台没有显示器的Linux机器上进行对象检测(使用OpenCV和C++)。我需要将OpenCV输出数据(mat)传输到其他机器(Linux/Windows/Android)以显示为实时视频。当然,我需要压缩(而不是原始CV mat数据)。 有什么实施建议吗 谢谢大家! 也许您可以尝试通过TCP传输数据 最好使用线程发送视频\u数据,否则会影响OpenCV抓取下一帧图像的过程。您可以在发送之前添加一些图像压缩算法。代码如下所示: #包括 #包括 #包括 #包括 std::字符串IP_AD

我目前正在一台没有显示器的Linux机器上进行对象检测(使用OpenCV和C++)。我需要将OpenCV输出数据(mat)传输到其他机器(Linux/Windows/Android)以显示为实时视频。当然,我需要压缩(而不是原始CV mat数据)。 有什么实施建议吗


谢谢大家!

也许您可以尝试通过TCP传输数据

最好使用线程发送
视频\u数据
,否则会影响OpenCV抓取下一帧图像的过程。您可以在发送之前添加一些图像压缩算法。代码如下所示:

#包括
#包括
#包括
#包括
std::字符串IP_ADDR{“123.45.67.89”};
int端口=6666;
std::atomic_flag flag=atomic_flag_INIT;
void*tcp\u线程图(void*arg){
地址中的结构sockaddr\u;
int sockfd=套接字(AF_INET,SOCK_STREAM,0);
如果(sockfd==-1){throw;}
bzero(地址和地址,sizeof(地址));
addr.sin_family=AF_INET;
addr.sin_addr.s_addr=inet_addr(IP_addr.c_str());
地址SINU port=htons(端口);
int err=connect(sockfd,(struct sockaddr*)&addr,sizeof(addr));
while(flag.test_和_set()){
//TODO:发送前添加压缩算法
发送(sockfd,(char*)视频数据,sizeof(视频数据),0);
}
返回空ptr;
}

也许您可以尝试通过TCP传输数据

最好使用线程发送
视频\u数据
,否则会影响OpenCV抓取下一帧图像的过程。您可以在发送之前添加一些图像压缩算法。代码如下所示:

#包括
#包括
#包括
#包括
std::字符串IP_ADDR{“123.45.67.89”};
int端口=6666;
std::atomic_flag flag=atomic_flag_INIT;
void*tcp\u线程图(void*arg){
地址中的结构sockaddr\u;
int sockfd=套接字(AF_INET,SOCK_STREAM,0);
如果(sockfd==-1){throw;}
bzero(地址和地址,sizeof(地址));
addr.sin_family=AF_INET;
addr.sin_addr.s_addr=inet_addr(IP_addr.c_str());
地址SINU port=htons(端口);
int err=connect(sockfd,(struct sockaddr*)&addr,sizeof(addr));
while(flag.test_和_set()){
//TODO:发送前添加压缩算法
发送(sockfd,(char*)视频数据,sizeof(视频数据),0);
}
返回空ptr;
}

谢谢。我使用UDP传输帧,每个帧将从cv Mat转换为图像以减小大小,在接收器上-数据将解码回cv Mat以显示。压缩比约为10倍,似乎符合我的要求谢谢。我使用UDP传输帧,每个帧将从cv Mat转换为图像以减小大小,在接收器上-数据将解码回cv Mat以显示。压缩比约为10倍,似乎符合我的要求