C++ cURL下载相机图像(http请求)

C++ cURL下载相机图像(http请求),c++,image,curl,camera,C++,Image,Curl,Camera,我已经安装了cURL,我可以从网站上下载一张图片,效果很好 代码如下: #define CURL_STATICLIB #include <stdio.h> #include <stdlib.h> #include </usr/include/curl/curl.h> #include </usr/include/curl/stdcheaders.h> #include </usr/include/curl/easy.h> size_t

我已经安装了cURL,我可以从网站上下载一张图片,效果很好

代码如下:

#define CURL_STATICLIB
#include <stdio.h>
#include <stdlib.h>
#include </usr/include/curl/curl.h>
#include </usr/include/curl/stdcheaders.h>
#include </usr/include/curl/easy.h>

size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
   size_t written = fwrite(ptr, size, nmemb, stream);
   return written;
}

int main(void) {
   CURL *curl;
   FILE *fp;
   CURLcode res;

   char *url = "http://www.example.com/test_img.png"; 
   char outfilename[FILENAME_MAX] = "/home/c++_proj/output/web_req_img.png";
   curl = curl_easy_init();
   if (curl) {
       fp = fopen(outfilename,"wb");
       curl_easy_setopt(curl, CURLOPT_URL, url);
       curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
       curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
       res = curl_easy_perform(curl);
       /* always cleanup */
       curl_easy_cleanup(curl);
       fclose(fp);
   }
   return 0;
}
#定义CURL\u STATICLIB
#包括
#包括
#包括
#包括
#包括
大小写入数据(void*ptr、大小、大小nmemb、文件*流){
写入的大小=写入(ptr、大小、nmemb、流);
书面回报;
}
内部主(空){
卷曲*卷曲;
文件*fp;
卷曲编码;
char*url=”http://www.example.com/test_img.png"; 
char outfilename[FILENAME_MAX]=“/home/c++_proj/output/web_req_img.png”;
curl=curl_easy_init();
if(curl){
fp=fopen(出口名称,“wb”);
curl_easy_setopt(curl,CURLOPT_URL,URL);
curl\u easy\u setopt(curl,CURLOPT\u WRITEFUNCTION,write\u data);
curl_easy_setopt(curl,CURLOPT_WRITEDATA,fp);
res=旋度(curl)\u容易执行(curl);
/*总是清理*/
旋度\轻松\清洁(旋度);
fclose(fp);
}
返回0;
}
我还有一个dlink DCS-930L摄像头。我可以轻松地将我的相机连接到一个静态IP地址,并且通过登录相机(例如
http://192.168.1.5
)。 我不需要任何特殊的软件或任何东西来开始观看视频

现在,我想使用cURL从相机下载图像。但我不知道怎么做。 有人能告诉我,或者提供一些代码吗? 我所要做的就是捕获(采样)正在流式传输的一些图像。 我如何知道何时发出请求,以及何时是图像之间的边界

如果能给我一些建议和代码,我将不胜感激


T

根据本相机的手册[1],您需要使用Java或ActiveX插件来接收和观看视频:

请确保您拥有最新版本的Java应用程序 安装在您的计算机上,以确保在查看 Java模式下的视频。Java应用程序可以免费下载 来自Sun的网站()

当您连接到相机的主页时,系统将提示您 下载ActiveX。如果要使用ActiveX查看视频 图像而不是Java,则必须下载ActiveX

这意味着获取图像将比简单地发出HTTP请求更加困难

[1] http://www.dlink.com/us/en/support/product/-/media/Consumer_Products/DCS/DCS%20930L/Manual/DCS%20930L_Manual_EN_US.pdf

这完全取决于摄像头提供的界面,即显示的图像/视频的内容类型
http://192.168.1.5
实际上是。唯一能够帮助你的人就是那些家里有那台相机的人。@Ruby:请不要在发帖时使用签名,伙计,谢谢,:)我想抓取这张图片的原因是我想对它进行一些图像处理。所以,不知何故,我需要下载图像,这样我就可以把它变成一种编程语言。我能用C/C++/Python/Java程序吗?我不熟悉这台相机,所以我不知道。用插件查看网页的来源,也许可以尝试嗅探网络流量——也许只是一个JPG流,然后你可以截取并保存它。