c++ - OpenCV 拼接模式:SCANS 因某些属性而崩溃
问题描述
我正在尝试设置平面图像拼接应用程序,但如果我在 PlaneWarper 下方提供拼接器,应用程序会因访问异常错误而崩溃。我还了解到 ORB 特征查找最适合平面拼接,但使用 OrbFeatureFinder 也会导致应用程序在拼接函数中崩溃。我知道我并不完全了解拼接管道的工作原理,所以如果有人能帮助我理解这里的问题,我将不胜感激。
vector<Mat> imgs;
cv::Mat stitch (vector<Mat>& images)
{
imgs = images;
Mat pano;
Ptr<Stitcher> stitcher = Stitcher::create(Stitcher::SCANS, true);
stitcher->setPanoConfidenceThresh(0.8f);
stitcher->setFeaturesMatcher(makePtr<cv::detail::AffineBestOf2NearestMatcher>(true, true, 0.8f));
Stitcher::Status status = stitcher->stitch(imgs, pano);
if (status != Stitcher::OK)
{
cout << "Can't stitch images, error code = " << int(status) << endl;
//return 0;
}
return pano;
}
我已经在我的 Mac 上测试了带有 Orb 特征查找和平面翘曲的stitching_detailed 程序,它给了我很好的结果,所以我尝试在 iOS 应用程序界面中运行stitching_detailed.cpp,但这会导致所有类型的崩溃,所以我正在尝试现在这样。
拼接效果很好,但这里和那里有一些失真,并且使用 ORB 特征发现和平面翘曲在我的 Mac 上消除了它。
解决方案
我只是粗略地看了一下,但我怀疑你的问题在于 OpenCV 的结构。在 Mac 上运行时,它可以通过 OpenCL 使用 GPU。但是,在 iOS 设备上运行时,它不能使用 OpenCL,因为它不受支持。因此,它必须使用此处找到的基于 CPU 的实现。
您将看到该变量try_use_gpu
被广泛使用,并且根据它的配置和运行方式,这可能是罪魁祸首。虽然我不能确定你的情况,但我之前发现有 iOS 特定的功能被破坏,甚至根本不存在。话虽如此,您可能希望向项目提出问题,希望有人可以接手并修复它。
推荐阅读
- java - Java - 向 Slack Webhook 发送消息
- ios - 在 iOS swift/Objective C 中实现 Diffie Hellman 生成公钥和私钥的方法是什么?(除了 Chilkat)
- python - 如何获得大于10000的电报组的成员
- r - 动态选择数据框
- node.js - Firebase 管理数据库始终返回 null 作为快照值
- netlogo - NetLogo 自动补全与 windows
- powershell - 如何使用 powershell 在 sitecore 中获取创建日期
- matlab - 如何将矢量场重新缩放到不同的网格上?
- ubuntu-16.04 - SonerQube 没有启动
- javascript - 检查对离屏画布的支持