我如何防范cvLoad的失败?

时间:2012-08-10 18:54:48

标签: c++ c opencv

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

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

只要文件在程序的工作目录中,这样就可以正常工作。当它们不存在时,程序崩溃而没有任何错误性质的指示。我之前没有多次正确定位xml文件的错误,我希望将来更容易进行故障排除。

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

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

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

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

我查看了OpenCV文档,但在找不到指定的文件时无法找到cvLoad行为的描述,所以我不知道如何继续。

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

1 个答案:

答案 0 :(得分:0)

It works。来吧,亲自尝试一下:

CvMat *distortion = (CvMat*)cvLoad("Distortion.xml");
if (!distortion)
{
    printf("!!! cvLoad failed");
    exit(-1);
}