misc update
[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 ReadImageToDatum(const string& filename, const int label, Datum* datum);
38 void ReadProtoFromTextFile(const char* filename,
39     Message* proto);
40 inline void ReadProtoFromTextFile(const string& filename,
41     Message* proto) {
42   ReadProtoFromTextFile(filename.c_str(), proto);
43 }
45 void WriteProtoToTextFile(const Message& proto, const char* filename);
46 inline void WriteProtoToTextFile(const Message& proto, const string& filename) {
47   WriteProtoToTextFile(proto, filename.c_str());
48 }
50 void ReadProtoFromBinaryFile(const char* filename,
51     Message* proto);
52 inline void ReadProtoFromBinaryFile(const string& filename,
53     Message* proto) {
54   ReadProtoFromBinaryFile(filename.c_str(), proto);
55 }
57 void WriteProtoToBinaryFile(const Message& proto, const char* filename);
58 inline void WriteProtoToBinaryFile(const Message& proto, const string& filename) {
59   WriteProtoToBinaryFile(proto, filename.c_str());
60 }
63 }  // namespace caffe
65 #endif   // CAFFE_UTIL_IO_H_