0

我知道有多个 C++ 库可以使用 cURL 从 Amazon S3 访问数据。使用它们,我可以将图像下载到本地机器,将其读入 OpenCV,然后删除原始文件。

但是,我想知道是否可以直接从 S3 将图像直接读取到 OpenCV 中,例如 Mat 对象。

有人能帮我完成这个吗?

4

2 回答 2

2

使用cv::imdecode,它将带有一些图像数据(png、jpeg 等)的缓冲区从内存加载到矩阵中。

// Suppose that a std::vector<char> contains the data loaded by Curl.
std::vector<char> data;
// The template<typename T> explicit cv::Mat::Mat(const std::vector<T>& vec)
// constructor gives this vector a cv::Mat header.
cv::Mat data_mat(data);
// Now use cv::imdecode to decode the image to a BGR matrix.
cv::Mat image(cv::imdecode(data_mat));
于 2012-07-08T15:14:51.037 回答
0

所以,这就是我必须做的,就 Poco 方面而言。

std::auto_ptr<std::istream> pStr(URIStreamOpener::defaultOpener().open(uri)); StreamCopier::copyToString(*pStr.get(), str);

这会将图像从提供的 URI 获取到字符串中str,而无需任何中间存储。其余的就像 Kristoff 解释的那样。

于 2012-07-11T22:49:29.197 回答