gpt4 book ai didi

c++ - 如何防止 cvLoad 失败?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:59:21 24 4
gpt4 key购买 nike

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

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

只要文件在程序的工作目录中,就可以正常工作。如果不是,则程序会崩溃,而不会指示错误的性质。我之前多次犯过没有正确定位 xml 文件的错误,我希望将来更容易解决这个问题。

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

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

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

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

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

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

最佳答案

It works .继续自己尝试:

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

关于c++ - 如何防止 cvLoad 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11907613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com