C++ Dlib使用istream反序列化人脸形状模型

C++ Dlib使用istream反序列化人脸形状模型,c++,opencv,face-detection,dlib,C++,Opencv,Face Detection,Dlib,说到dlib,我完全不知道。我知道如何直接从文件中加载面形状模型,并且它可以正常工作 dlib::shape_predictor face_shape_predictor_; dlib::deserialize("shape_predictor_68_face_landmarks.dat") >> face_shape_predictor_; 但是如何从istream反序列化呢 我有以下代码: dlib::shape_predictor face_shape_predictor_;

说到dlib,我完全不知道。我知道如何直接从文件中加载面形状模型,并且它可以正常工作

dlib::shape_predictor face_shape_predictor_;
dlib::deserialize("shape_predictor_68_face_landmarks.dat") >> face_shape_predictor_;
但是如何从istream反序列化呢

我有以下代码:

dlib::shape_predictor face_shape_predictor_;
std::stringstream face_data_stream;

loadDataToStream(face_data_stream);
dlib::deserialize(face_shape_predictor_, face_data_stream);
using namespace dlib;

我不知道如何让它工作。

谷歌第一次搜索“dlib Desaailize”的结果引出了这段文字;)

dlib命名空间中有两个全局函数提供序列化和
反序列化支持。其签名和规格如下:
无效序列化(
常量可序列化_类型和项,
std::ostream&out
);
/!*
确保
-将项的状态写入输出流out
-如果(serializable_type实现可枚举接口),则
-item.at_start()==true
投掷
-序列化错误
如果存在阻止发生异常的问题,则会引发此异常
我们无法成功地将项写入输出流。
-任何其他例外情况
*!/
无效反序列化(
可序列化的_类型和项,
std::istream&in
);
/!*
确保
-#item==已创建的可序列化_类型的反序列化副本
在中的输入流中。
-读取与序列化的可序列化_类型关联的所有字节
包含在输入流中,仅此而已。这意味着你
可以将多个对象序列化为输出流,然后读取
使用反序列化()将它们一个接一个地返回。
-如果(serializable_type实现可枚举接口),则
-item.at_start()==true
投掷
-序列化错误
如果存在阻止发生异常的问题,则会引发此异常
我们无法成功地从输入流中反序列化项。
若引发此异常,则该项将具有初始值
因为它的类型。
-任何其他例外情况
*!/
为方便起见,您还可以使用以下语法序列化到文件:
序列化(“your_file.dat”)一些\u对象>>另一个\u对象;

实际上,添加以下代码:

dlib::shape_predictor face_shape_predictor_;
std::stringstream face_data_stream;

loadDataToStream(face_data_stream);
dlib::deserialize(face_shape_predictor_, face_data_stream);
using namespace dlib;
解决了编译问题。

可以在此处找到答案: