gpt4 book ai didi

java - 通过套接字将 Mat 对象从 C++ 发送到 Java

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:55:08 26 4
gpt4 key购买 nike

我对从 C++ 服务器向 Java 客户端发送视频流很感兴趣。 C++ 服务器是用 boost/asio 编写的。
我正在考虑使用 opencv 以便轻松连接到计算机的 USB 摄像头。但是,我在通过套接字发送 Mat 对象时遇到了问题。

我遇到的唯一方法是这样做:

Mat frame;
...
int imgSize = frame.total()*frame.elemSize();
bytes = send(clientSock, frame.data, imgSize, 0))

但我不能用这种方式发送它,因为它必须采用以下形式之一: http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/reference/basic_raw_socket/send_to.html

所以我想到了将 frame.data ,imgSize 转换成字符串,然后将这两个缓冲区的容器发送出去,但我认为这不是正确的方法。即使是,我如何在 Java 客户端中“重建”图像?

任何想法将不胜感激!

最佳答案

您可以尝试在 Base64 中对您的图像进行编码,以使用 XML 或 JSON 等协议(protocol)通过套接字发送它们。

Base64 is a group of similar binary-to-text encoding schemes that represent binary data in an ASCII string format

这可能不是最有效的方法,但目前对您来说可能是最简单的方法。您可以在 wiki page 上找到有关 Base64 的更多信息您可以找到有关将 OpenCV Mat 转换为 Base64 的更多信息 here .还有一些关于如何在 Java 中显示 Base64 图像的教程。

关于java - 通过套接字将 Mat 对象从 C++ 发送到 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20820900/

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