2

我正在编写一个使用 OpenCV 并涉及内在和失真参数的程序。这些参数是从保存在光盘上的 .xml 文件加载的。我在开始声明中使用以下命令来加载文件:

CvMat *intrinsic  = (CvMat*)cvLoad("Intrinsics.xml");
CvMat *distortion = (CvMat*)cvLoad("Distortion.xml");

只要文件在程序的工作目录中,它就可以正常工作。当它们不是时,程序会崩溃而没有任何错误性质的迹象。我之前多次犯过没有正确定位 xml 文件的错误,我希望以后更容易解决这个问题。

我想创建一个防止文件加载失败的防护措施。也许如果它们不存在,我的程序可能会显示错误消息并正常退出。我看到了这里建议的方法,它应该对我有用,但我想知道是否有一种更简洁的方法可以在不包含另一个标题的情况下做到这一点。

例如,OpenCV 函数 cvQueryFrame 如果不返回帧则返回 0。我使用代码

frame = cvQueryFrame(capture);
if(!frame)
{
    printf("ERROR: Could not get frame from webcam.");
    exit(-1);
}

如果 cvQueryFrame 未能返回帧,则退出程序。我想用我的矩阵加载命令做类似的事情。这可能吗,如果可以,我该怎么做?

我检查了 OpenCV 文档,当找不到指定的文件时找不到 cvLoad 行为的描述,所以我不确定如何继续。

我正在用 C++ 编写这个项目并在 Windows 7 上运行它。

4

1 回答 1

0

它有效。继续尝试自己:

CvMat *distortion = (CvMat*)cvLoad("Distortion.xml");
if (!distortion)
{
    printf("!!! cvLoad failed");
    exit(-1);
}
于 2012-08-10T20:32:46.670 回答