我有一个numpyndarray
保存{dump()
方法以二进制格式存储到一个文件中。在
from cPickle import dump, HIGHEST_PROTOCOL
with open(filePath, 'wb') as f:
dump(numpyArray, f, protocol=HIGHEST_PROTOCOL)
在撰写本文时,HIGHEST_PROTOCOL
使用了cPickle的protocol version 2,但似乎没有太多的文档说明这个协议是如何工作的。在
我要做的是读取这个文件并用数据创建一个cv::Mat
对象(see here),这是非常困难的。在
在这一点上,我希望让事情尽快运行,我不太担心性能,存储空间和效率。然而,这些因素可能会在以后变得重要。在
因此,我的问题是,如何将此文件中的数据转换为cv::Mat
对象,最简单的方法是什么?如果你认为最简单的方法不一定是最有效的方法,那么我也想听听你对此的想法。请注意,我将使用不同的存储格式,可能只是一个文本文件,如果它将使Python和C++之间的互操作更容易。在
我必须将numpy
数组存储到磁盘,因为我需要能够在移动设备(iOS和Android)上打开和读取这个文件,并且使用网络调用来获取数据目前还没有真正在桌面上。在
Pickle可能不是将数据传输到Python之外的其他语言的方便方法。在
实际上,我认为Pickle根本不适合数据存储,因为:
这并不是说它没有它的用途:它对缓存、个人脚本或进程之间的数据通信等东西都很方便。在
但其他人可能不同意这种观点。在
那么你会用什么呢?以下是一些想法:
tofile
。这可能是速度和尺寸的最佳选择,而不是很难load。在savetxt
。在tolist()
和dumps
。这将是缓慢的,并产生大文件,但它将是可移植的,它将适用于任何维度,甚至不相等的行/列长度。在只是为了好玩:
编辑:here is a benchmark for various methods:
相关问题 更多 >
编程相关推荐