我正在编写一个使用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上运行它。
答案 0 :(得分:0)
It works。来吧,亲自尝试一下:
CvMat *distortion = (CvMat*)cvLoad("Distortion.xml");
if (!distortion)
{
printf("!!! cvLoad failed");
exit(-1);
}