Implementation has been removed due original code license issues in function LineSegmentDetectorImp


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


1.问题描述

在使用 opencv 3.4.10 及 opencv 4.10 的时候发现一个lsd算法使用的问题:

../modules/imgproc/src/lsd.cpp:143: error: (-213:The function/feature is not implemented) Implementation has been removed due original code license issues in function 'LineSegmentDetectorImpl'

2.问题分析:

1.OpenCV 许可问题:

从OpenCV 4.1.0版本开始,LineSegmentDetector(LSD)的实现被移除,原因是存在与原始代码的许可冲突。根据评论中的信息,LSD的功能已经从OpenCV核心库中删除。

2.OpenCV版本变化:

OpenCV 3.x 版本中仍然包含了LSD功能,但从4.1.0版本开始,该功能被移除,导致脚本中调用 cv2.createLineSegmentDetector() 时出现错误。

3.使用其他替代算法:

参考: Implementation has been removed due to original code license issues #4

  • 有用户提到可以使用 cv::ximgproc::FastLineDetector(FLD)作为替代。虽然FLD和LSD并不完全相同(FLD基于Canny边缘检测),但它在很多情况下可以替代LSD。
  • 使用FLD的代码示例
#include <opencv2/ximgproc.hpp>
using namespace cv::ximgproc;

vector lines;
Ptr<cv::ximgproc::FastLineDetector> detector = cv::ximgproc::createFastLineDetector();    
detector->detect(roi, lines);
  • 安装第三方库 pylsd:
    • 另一个解决方案是使用 pylsd,它是LSD的Python实现。可以通过以下命令安装 pip install pylsd
    • 然后按照 pylsd 文档,将其与OpenCV结合使用。

3.解决方法

经过测试,以下方法比较好

ubuntu18.04+opencv3.4.10+opencv3.4.10contrib+LSD使用

即: 分别找到3.4.10和3.1.0中,modules/imgproc/src中的lsd.cpp文件,将3.1.0中的lsd.cpp文件拷贝至3.4.10的对应位置中即可。

下面这个是opencv4.x的,但未进行测试

爷青回!我竟然在OpenCV 4.x中使用了LSD算法

参考

OpenCV中无法使用lsd算法的问题 Implementation has been removed due original code license conflict

LineSegmentDetector original code liscence issue #14576

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草莓奶忻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值