对于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);
我不知道如何让它发挥作用。
答案 0 :(得分:4)
google中“dlib deserailize”的第一个搜索结果会导致此文字;)
There are two global functions in the dlib namespace that provide serialization and
deserialization support. Their signatures and specifications are as follows:
void serialize (
const serializable_type& item,
std::ostream& out
);
/!*
ensures
- writes the state of item to the output stream out
- if (serializable_type implements the enumerable interface) then
- item.at_start() == true
throws
- serialization_error
This exception is thrown if there is some problem which prevents
us from successfully writing item to the output stream.
- any other exception
*!/
void deserialize (
serializable_type& item,
std::istream& in
);
/!*
ensures
- #item == a deserialized copy of the serializable_type that was
in the input stream in.
- Reads all the bytes associated with the serialized serializable_type
contained inside the input stream and no more. This means you
can serialize multiple objects to an output stream and then read
them all back in, one after another, using deserialize().
- if (serializable_type implements the enumerable interface) then
- item.at_start() == true
throws
- serialization_error
This exception is thrown if there is some problem which prevents
us from successfully deserializing item from the input stream.
If this exception is thrown then item will have an initial value
for its type.
- any other exception
*!/
For convenience, you can also serialize to a file using this syntax:
serialize("your_file.dat") << some_object << another_object;
That overwrites the contents of your_file.dat with the serialized data from some_object
and another_object. Then to recall the objects from the file you can do:
deserialize("your_file.dat") >> some_object >> another_object;
答案 1 :(得分:0)
实际上,添加以下代码:
using namespace dlib;
解决了编译问题。