码迷,mamicode.com
首页 > 编程语言 > 详细

kv文件读写 in Python & C++

时间:2015-01-04 12:12:28      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

文件格式均为kv对,即keylength, key, valuelen, value. 如何对其进行读写操作,本文列出demo code。感谢涛哥贡献部分代码,这里分享,方便大家使用。


Python:

def readimg():
	fr = open(‘IMG_2963.JPG‘,‘r‘)
	keylen = struct.unpack(‘i‘,fr.read(4))[0]
	key = fr.read(keylen)
	valuelen = struct.unpack(‘i‘,fr.read(4))[0]
	value = fr.read(valuelen)
	fr.close()


def writeimg():
	fw = open(‘Img_to_Write‘,‘w‘)
	key = ‘key‘
	fw.write(struct.pack(‘i‘,len(key)))
	fw.write(key)           
	fw.write(struct.pack(‘i‘,len(val)))
	fw.write(val)
	fw.close()





C++:

inline bool readkv(istream &ifs,string &key,string &value)
{
	int keylen;
	ifs.read((char*)&keylen,4);
	if (!ifs)
	{
		return false;
	}
	key.resize(keylen);
	ifs.read((char*)key.c_str(),keylen);
	int valuelen;
	ifs.read((char*)&valuelen,4);
	value.resize(valuelen);
	ifs.read((char*)value.c_str(),valuelen);
	return true;
}

inline void writekv(ostream &ofs,const string & key,const string & value)
{
	unsigned int klen = key.size();
	unsigned int vlen = value.size();
	ofs.write((const char*)&klen,4);
	ofs.write(key.c_str(),klen);
	ofs.write((const char*)&vlen,4);
	ofs.write(value.c_str(),vlen);
	ofs.flush();
}


如果value是一张图片的data,调用的时候可以用opencv的imdecode直接进行转换,生成cv::Mat类型的图片

cv::Mat buf(1,value.size(),CV_8U,(void *)value.c_str());
cv::Mat srcmat = cv::imdecode(buf,1);






kv文件读写 in Python & C++

标签:

原文地址:http://blog.csdn.net/abcjennifer/article/details/42388369

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!