C++ 如何通过web浏览器获取从相机检索到的图像?

C++ 如何通过web浏览器获取从相机检索到的图像?,c++,ip-camera,C++,Ip Camera,我有一个IP摄像头,当我输入手册提供的特定url时,它会给我一个它所看到的快照。该手册还规定http响应为: HTTP Code: 200 OK Content-Type: image/jpeg Content-Length: <image size> Body:<JPEG image data> HTTP代码:200 OK 内容类型:图像/jpeg 内容长度: 正文: 看着Firefox上的页面,我只能看到图像。我甚至无法查看其页面来源。我希望这是用C++来捕获的一

我有一个IP摄像头,当我输入手册提供的特定url时,它会给我一个它所看到的快照。该手册还规定http响应为:

HTTP Code: 200 OK
Content-Type: image/jpeg
Content-Length: <image size>
Body:<JPEG image data>
HTTP代码:200 OK
内容类型:图像/jpeg
内容长度:
正文:
看着Firefox上的页面,我只能看到图像。我甚至无法查看其页面来源。我希望这是用C++来捕获的一种非常简单的格式。 我想写一个C++程序,它可以在某个时间间隔自动从相机上获取图像(甚至在图像上的时候也可以对图像进行处理)。 我需要知道什么才能做到这一点


<>(注意我必须使用C++编辑和Linux)

前提是你提到“我必须使用C++”,如果Windows有问题,你可以使用。您创建会话并连接到IP摄像头web服务器,然后发送带有URL的HTTP请求以获取JPEG快照,并读回JPEG图像数据。

HTTP语句本身就是图像。除了对图像数据进行编码外,图像上方有一些文本标题。否则,它与在本地映像文件中找到的映像等效。要获取文件,请打开与服务器的连接,读入内容并解释HTTP请求。[它会告诉您错误的请求、图像大小等]


有关如何获取资源的信息,请参见最简单的解决方案可能是。它甚至还缺少(;){grab();sleep(60000);}循环的

啊,我忘了提到我也被限制在linux上。编辑这篇文章。那么,没有Windows的详细信息了:)我仍然相信这个想法几乎是一样的。您必须发送一个HTTP请求并获取数据。您可以直接通过TCP套接字发送,也可以通过HTTP感知的包装器发送。有些IP摄像机的性能已经很差,HTTP包装器无法识别响应是否有效,并且您仅限于TCP通信。您能否详细说明如何打开与服务器的连接?只要打开一个套接字到Web服务器下的端口80或资源所处的任何位置,发送一个简单的HTTP请求,然后你会收到数据包,或者是什么让你使用C++?显然没有HTML页面。如果有一个HTML页面,内容类型可能是文本/html。@ N.M.碰巧,图像上使用的面部识别软件是C++的。你不必将HTTP客户端与脸部识别软件链接起来,它们可以保持单独的可执行文件。即使必须链接,现代系统也完全能够链接用不同语言编写的库和程序。如果您仍然想这样做,那么最好使用现有的HTTP客户端库,例如。它是用C编写的,但是在C++程序中使用C库是非常容易的。您不需要做任何特殊的事情,它只起作用。@monksy:还有一些shell脚本,用于重命名检索日期/时间之后捕获的不同图像。您真的不应该使用sleep作为脚本。否则,进程将一直运行。您应该使用cron,因为系统可以安排要运行的任务。@monksy:sleep不使用任何CPU,将进程保留在内存中可能比每小时从磁盘重新加载60次更有效。这个示例很好,但这非常适合我的情况。将帖子标记为答案,因为它直接引导我找到解决方案。