You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenCV中fs.open调用失败求助:读取.xml文件抛出cv::Exception异常

解决OpenCV读取XML时的"Input file is empty"异常

嘿,别着急,我来帮你捋捋这个问题~你遇到的cv::Exception提示“Input file is empty”,核心问题就是OpenCV要么找不到有效的test.xml文件,要么文件本身不符合读取要求。结合你的Win7+VS2015+OpenCV3.4.1的环境,我整理了几个最可能的原因和解决办法:

1. 相对路径没找对文件

你代码里用的是相对路径"test.xml",程序运行时会在当前工作目录查找文件,而不是你的.cpp源码所在的目录!VS2015默认的工作目录是项目根目录(不是Debug/Release输出文件夹)。

  • 快速验证:把文件路径改成绝对路径试试,比如"C:\\Users\\你的用户名\\Desktop\\test.xml"(Windows路径要注意用双反斜杠\\或者正斜杠/),如果能正常运行,那就是相对路径的问题。
  • 永久解决:右键项目→属性→调试→工作目录,把路径改成你存放test.xml的文件夹,之后用相对路径就没问题了。

2. XML文件为空或格式错误

OpenCV对XML文件的格式有明确要求,空文件或者不符合规范的文件都会触发这个错误:

  • 先打开你的test.xml确认:是不是创建了文件但没写入任何内容?或者保存时出错了?
  • 你可以先写一个最简单的符合OpenCV要求的XML测试文件,比如:
    <?xml version="1.0"?>
    <opencv_storage>
        <test_value>123</test_value>
    </opencv_storage>
    
    用这个文件测试读取,看是否还会报错。

3. 文件权限限制

Win7下某些目录(比如C盘根目录、Program Files文件夹)的权限比较严格,程序可能没有读取文件的权限:

  • 把test.xml移到桌面、文档这类普通用户有完全权限的目录,再运行程序试试。

4. 额外检查:OpenCV配置是否正确

虽然如果配置错误大概率编译不过,但也可以快速确认一下:

  • 右键项目→属性→链接器→输入→附加依赖项,检查是否包含了对应模式的core库:Debug模式是opencv_core341d.lib,Release模式是opencv_core341.lib。

小提示

以后遇到文件读取类的问题,优先检查三个点:文件是否存在、路径是否正确、文件内容是否有效,这几乎能解决80%的类似问题~

内容的提问来源于stack exchange,提问作者Fox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:32:46