OpenCV4编译createsamples.cpp出现FileStorage类报错如何解决
OpenCV4编译createsamples.cpp报错修复方案
报错根因
所有FileStorage、FileNode未定义的报错,核心是两个问题:
- OpenCV4将持久化相关的类定义从
core.hpp拆分到了独立的persistence.hpp头文件,开源仓库里的旧版createsamples.cpp没有适配这个头文件结构变动 - 直接使用裸g++命令单文件编译,没有引入OpenCV的头文件路径、编译参数和依赖库,导致依赖链断裂
修复步骤
- 第一步:修改createsamples.cpp的头文件引用,在
#include <opencv2/core.hpp>这行之前,新增一行代码:
#include <opencv2/core/persistence.hpp>
- 第二步:使用pkg-config自动加载OpenCV4的编译参数执行编译,不要手动写g++参数,完整命令如下:
g++ createsamples.cpp -o createsamples `pkg-config --cflags --libs opencv4`
如果执行命令时提示找不到opencv4的配置,先安装对应系统的OpenCV4开发包,Debian/Ubuntu系系统可执行sudo apt install libopencv-dev。
- 第三步:编译完成后将生成的可执行文件移动到系统全局路径,即可正常调用:
sudo mv createsamples /usr/local/bin/
内容的提问来源于stack exchange,提问作者Harry Hobson
相关产品推荐
相关产品推荐

