OpenCV 4.2.0 FileStorage分段错误

问题描述 投票:2回答:1

[这是this问题在OpenCV问答论坛上的转贴。]

嗨!我在使用this YML file (pastebin)(以及我在OpenCV上抛出的任何其他YML)的FileStorage API时遇到了一个大问题。基本上,每当我尝试访问有关任何FileNode的信息时,该程序就会出现段错误。

起初,我虽然是由于我在macOS上自定义了OpenCV,但尝试使用预构建的OpenCV 4.2.0 Windows二进制文件后,问题仍然存在。

在LLDB中到处都是,我认为崩溃发生在

cv::FileStorage::Impl::getNodePtr(unsigned long, unsigned long)

相关的代码段是:

cv::FileStorage fs;
try{
    fs = cv::FileStorage("someFile.yml", cv::FileStorage::READ);
}catch(cv::Exception ex)
{
    return 1;
}

cv::FileNode node = fs.root();

std::cout << "Got root node" << std::endl;
std::cout << "Root node is type: " << node.type() << std::endl; //Crash here

我真的很茫然,感谢您的帮助。

编辑1

[在opencv论坛上,有人发现在fs块中初始化try/catch导致了此问题。在cv::FileStorage fs = cv::FileStorage("someFile.yml", cv::FileStorage::READ);中对其进行外部初始化可以解决该问题。我仍然不知道为什么会这样...

c++ opencv segmentation-fault opencv4
1个回答
1
投票

如OpenCV问答中所写,可以像这样规避此问题:

cv::FileStorage fs;
try{
    fs.open("someFile.yml", cv::FileStorage::READ);
}catch(cv::Exception ex)
{
    return 1;
}

//Do stuff with fs

我不喜欢C ++专家(复制构造函数和东西),但是可能我的问题与此有关……

© www.soinside.com 2019 - 2024. All rights reserved.