57beef1dc00685f06294ff1e813b70f1cbc075f5
[jacinto-ai/caffe-jacinto.git] / src / caffe / util / io.hpp
1 // Copyright Yangqing Jia 2013
3 #ifndef CAFFE_UTIL_IO_H_
4 #define CAFFE_UTIL_IO_H_
6 #include <google/protobuf/message.h>
8 #include <string>
10 #include "caffe/blob.hpp"
11 #include "caffe/proto/caffe.pb.h"
13 using std::string;
14 using ::google::protobuf::Message;
16 namespace caffe {
18 void ReadImageToProto(const string& filename, BlobProto* proto);
20 template <typename Dtype>
21 inline void ReadImageToBlob(const string& filename, Blob<Dtype>* blob) {
22   BlobProto proto;
23   ReadImageToProto(filename, &proto);
24   blob->FromProto(proto);
25 }
27 void WriteProtoToImage(const string& filename, const BlobProto& proto);
29 template <typename Dtype>
30 inline void WriteBlobToImage(const string& filename, const Blob<Dtype>& blob) {
31   BlobProto proto;
32   blob.ToProto(&proto);
33   WriteProtoToImage(filename, proto);
34 }
36 void ReadProtoFromTextFile(const char* filename,
37     Message* proto);
38 inline void ReadProtoFromTextFile(const string& filename,
39     Message* proto) {
40   ReadProtoFromTextFile(filename.c_str(), proto);
41 }
43 void WriteProtoToTextFile(const Message& proto, const char* filename);
44 inline void WriteProtoToTextFile(const Message& proto, const string& filename) {
45   WriteProtoToTextFile(proto, filename.c_str());
46 }
48 void ReadProtoFromBinaryFile(const char* filename,
49     Message* proto);
50 inline void ReadProtoFromBinaryFile(const string& filename,
51     Message* proto) {
52   ReadProtoFromBinaryFile(filename.c_str(), proto);
53 }
55 void WriteProtoToBinaryFile(const Message& proto, const char* filename);
56 inline void WriteProtoToBinaryFile(const Message& proto, const string& filename) {
57   WriteProtoToBinaryFile(proto, filename.c_str());
58 }
61 }  // namespace caffe
63 #endif   // CAFFE_UTIL_IO_H_