Я новичок в библиотеке Point Cloud (PCL) и имею ограниченные знания C ++ о том, как работают указатели. Хотя мы можем загрузить файл из файла и визуализировать его (используя этот учебник), как мы можем прочитать его с HTTP-URL?
int main () {
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGBA>);
pcl::io::loadPCDFile ("my_point_cloud.pcd", *cloud);
pcl::visualization::CloudViewer viewer("Cloud Viewer");
//blocks until the cloud is actually rendered
viewer.showCloud(cloud);
//use the following functions to get access to the underlying more advanced/powerful
//PCLVisualizer
while (!viewer.wasStopped ())
{
}
return 0;
}
Я не знаю, делает ли PCL это напрямую, но вы можете использовать CPR или же urdl Библиотеки C ++ либо скачать файл на локальный временный, или на самом деле работать в потоке.
Пример Urdl:
// For urdl::url.
#include <urdl/url.hpp>
// etc...
urdl::url url("http://somehost/path");
urdl::istream is("http://somehost/path");
и этот istream может использоваться либо напрямую (если PCL поддерживает это), либо вы можете записать данные о потоке в файл.
Пример программы с использованием cpr (a.k.a. C ++ Requests; на основе библиотеки C libcurl
):
#include <cpr/cpr.h>
int main(int argc, char** argv) {
auto r = cpr::Get(cpr::Url{"https://api.github.com/repos/whoshuu/cpr/contributors"},
cpr::Authentication{"user", "pass"},
cpr::Parameters{{"anon", "true"}, {"key", "value"}});
r.status_code; // 200
r.header["content-type"]; // application/json; charset=utf-8
r.text; // JSON text string
}
(взято с официального сайта cpr.)
Других решений пока нет …