将Mat
临时存储在磁盘上(然后重新加载)的最有效方法是什么? (在Java中,使用javacpp)
目前,我正在这样做(假设我的Mat
是单个频道,即“灰色”):
Mat mat=new Mat( 1000, 1000, opencv_core.CV_8UC1 );
opencv_imgcodecs.imwrite( "/tmp/tmpfile.pgm", mat );
mat.release();
mat = null;
// [...do something else that maybe needs the memory...]
mat = opencv_imgcodecs.imread( "/tmp/tmpfile.pgm", opencv_imgcodecs.CV_LOAD_IMAGE_GRAYSCALE );
[注意:尽管文档说了什么,但重新加载的Mat
与保存的imread
不匹配,而没有Mat
的附加标志。]
尽管这种方式有效,但我认为必须有比将其编码为图像格式更有效的方法来临时存储bundle:refresh
。我只是找不到可能做到的OpenCV函数。
关于如何更有效地执行操作,您有很好的建议吗?