我从源代码构buildOpenCV 3.0。 和一些额外的模块contrib回购。 而我手动设置我的VS2013项目使用生成的lib文件。 我的代码现在很简单: #include "opencv2\core\core.hpp" #include "opencv2\imgcodecs\imgcodecs.hpp" int _tmain(int argc, _TCHAR* argv[]) { cv::Mat image = cv::imread("img.jpg"); return 0; } 但是,在VS 2013社区版本中,它给了我这些错误: 我看到类似的线程 ,他们说这是由x86 / x64问题引起的。 但是我的项目已经是x86了。 而我build立的OpenCV也是针对x86(见下文)。 这是什么原因? ADD 1 OpenCV 3.0 INSTALL项目生成以下lib目录: 所以它确实是一个x86 。 我的libpathconfiguration为上面的path: 我添加了所有*d.lib文件。 下面是我的VC项目的Configuration Manager 所以它确实也是x86 。 哪里可能出错? ADD 2 我手动searchfastFree()函数。 它在opencv_core300d.lib文件中定义。 我使用dumpbin /symbols命令来检查符号。 而且我发现它的名字正像fastFree@cv@@YAXPAX@Z一样被fastFree@cv@@YAXPAX@Z 。 那为什么不能find?
有没有比OpenCV中的FileStorage方法更有效的方法来加载一个大型的Mat对象? 我有一个大的垫子,192列,100万行,我想本地存储在一个文件,并加载到内存然后我的应用程序启动。 使用FileStorage没有问题,但我想知道是否存在一个更有效的方法来做到这一点。 目前,使用Visual Studio中的debugging模式将Mat放入内存大约需要5分钟,在Release模式下大约需要3分钟,数据文件大小约为1.2GB。 FileStorage方法是唯一可用于执行此任务的方法吗?