爷青没!OpenCV 4.x之后竟然没了LSD算法!

在使用OpenCV 4.x系列的版本时,想利用LSD算法检测图像中的直线段,结果给我出来个这么玩意。
在这里插入图片描述
这个错误基本上是dll内部的问题,毕竟错误发生在OpenCV内部,一般遇到这个问题,我基本上是这样↓
在这里插入图片描述
没办法,只能看OpenCV源码来研究发生了啥,突然发现2010年经典的LSD算法没了!!!!!
在这里插入图片描述
这可是大事啊,但是OpenCV为了弥补这个问题,在opencv contrib扩展中的ximgproc模块中给出了一个LineSegmentDetector类,来替代LSD算法。

该算法来自于2014年ICRA的一篇论文《Outdoor place recognition in urban environments using straight lines
》,勉强能冲,不不,勉强够用。
在这里插入图片描述

为了更好的过渡到新版本,利用其检测算法,我们下面做个对比。

这个是LSD算法的代码用法。

cv::Ptr<cv::LineSegmentDetector> lsd = cv::createLineSegmentDetector(cv::LSD_REFINE_ADV);
std::vector<cv::Vec4f> lines_std;
lsd->detect(quad, lines_std);
lsd->drawSegments(quadrgb, lines_std);

这个是FLD算法的代码用法,在用这个代码时候,记得添加头文件#include <opencv2/ximgproc.hpp>

cv::Ptr<cv::ximgproc::FastLineDetector> fld = cv::ximgproc::createFastLineDetector();
std::vector<cv::Vec4f> lines_std;
fld->detect(quad, lines_std);
fld->drawSegments(quadrgb, lines_std);

从代码上来看,还好,只需要修改一行代码就能用,从工程的角度出发暂且够用。

下面问题来了,既然代码已经换了,效果肯定不同,在其他人的分析中,指出了FLD算法检测结果与LSD结果相似,但是速度更快,替换满足大部分需求

那么是否满足我的需求呢,我拿张图片测试下,左图是2010年的LSD算法,右图是2014年的FLD算法,尽管速度快乐,但明显丢了许多关键直线。(因为我的图特别模糊,LSD不是基于Canny的,FLD基于Canny的,必然失败)

在这里插入图片描述 在这里插入图片描述

这样肯定不能说是完全替代品呀!!!
在这里插入图片描述

最后个人来说很关键的个人总结

无论是LSD算法还是FLD算法,在大图的检测上肯定是FLD更有优势,但是,对于特别模糊的目标,或小目标,LSD是具有很大的优势的,目前来说,LSD不能被替代,所以目前的办法只能从OpenCV以前的代码中挖出源码,或者从github上下载源码移植了

希望以后能出来个更有效的直线段检测算法,o(╥﹏╥)o。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-6488186.html

如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网进行投诉反馈,一经查实,立即删除!


相关文章:

  • 爷青回!我竟然在OpenCV 4.x中使用了LSD算法!
  • OpenCV Aruco 参数源码完整解析理解!
  • 针对电陶炉E5错误的维修总结(狗头)
  • 克罗内克张量积 Kron 的 OpenCV C++实现
  • 关于使用SDKManager刷机出现No SDKs are available for your account的解决办法
  • 求你们了,以后按照我的办法配置OpenCV好么 (*╹▽╹*)
  • MATLAB调用C++开发——尝试写一个套着C++皮的Matlab函数
  • 论文阅读 2013 — EDCircles: A real-time circle detector with a false detection control
  • 是科研人就要快!加速你的算法!
  • 论文阅读 2017 —— Sensor Fusion for Fiducial Tags: Highly Robust Pose Estimation from Single Frame RGBD
  • [开源工具] 串口转wifi —— 两个串口之间通过网络进行通信
  • 论文阅读 2021——SUNet: Symmetric Undistortion Network for Rolling Shutter Correction
  • 论文阅读 2021 —— CodeMapping: Real-Time Dense Mapping for Sparse SLAM using Compact Scene
  • 论文阅读 2021 —— DnD: Dense Depth Estimation in Crowded Dynamic Indoor Scenes
  • 论文阅读 2018 —— CodeSLAM - Learning a Compact, Optimisable Representation for Dense Visual SLAM
  • 论文阅读 2020 —— VDO-SLAM: A Visual Dynamic Object-aware SLAM System
  • 论文阅读2021——Motion Basis Learning for Unsupervised Deep Homography Estimation with Subspace Projection
  • 论文阅读 2021 —— Pixel-Perfect Structure-from-Motion with Featuremetric Refinement
  • 在旭日X3派开发板上使用Intel Realsense深度相机
  • 利用OpenCV中的eigen替换函数dsyev来求解特征值和特征向量
  • 在旭日X3派开发板上使用USB Wifi来提高网络速度
  • pythpon基础:创建文件索引升级版
  • 【21】C语言 | 几个经典数组练习题
  • 跟我学c++高级篇——模板元编程之五模板和元编程
  • 【机器学习】(西瓜书习题8.5)编程实现Bagging模型,以决策树桩为基学习器,在西瓜数据集3.0a上训练一个Bagging集成,并与教材图8.6进行比较。
  • 关于婚姻
  • java复习一
  • JAVA复习 2数据类型
  • java复习 3运算符
  • java复习 4流程控制
  • java复习 5数组 6对象
  • Java复习 9继承与多态
  • Java复习 9.1问题???
  • java 创建实例时,里面的实例变量首先初始化???
  • java 两种方式的区别?
  • Java Review 9.3重写
  • Java Review 9.4 Ovrride
  • Java Review 12 Exception
  • Java Review 12 Exception test
  • Java Review 成员变量和局部变量
  • Java Review 包package
  • Java Review 12
  • 笑话(网上的,我修改了一下就不一样)
  • 《高效能人士的七个习惯》精简总结
  • 从码农到大牛
  • 计算机管理
  • 入股
  • 去年做过的项目
  • 从入职到现在的 开发总结
  • 荆棘鸟