OpenCV直线检测(一)—— LSD
头文件
#include "opencv2/imgproc.hpp"
类定义
cv::LineSegmentDetector Class Reference
Example
官方示例地址
#include <iostream>
#include <string>
#include "opencv2/core/core.hpp"
#include "opencv2/core/utility.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{std::string in;if (argc != 2){std::cout << "Usage: lsd_lines [input image]. Now loading ../data/building.jpg" << std::endl;in = "../data/building.jpg";}else{in = argv[1];}Mat image = imread(in, IMREAD_GRAYSCALE);
#if 0Canny(image, image, 50, 200, 3); // Apply canny edge
#endif// Create and LSD detector with standard or no refinement.
#if 1Ptr<LineSegmentDetector> ls = createLineSegmentDetector(LSD_REFINE_STD);
#elsePtr<LineSegmentDetector> ls = createLineSegmentDetector(LSD_REFINE_NONE);
#endifdouble start = double(getTickCount());vector<Vec4f> lines_std;// Detect the linesls->detect(image, lines_std);double duration_ms = (double(getTickCount()) - start) * 1000 / getTickFrequency();std::cout << "It took " << duration_ms << " ms." << std::endl;// Show found linesMat drawnLines(image);ls->drawSegments(drawnLines, lines_std);imshow("Standard refinement", drawnLines);waitKey();return 0;
}
LSD detector 初始化参数
CV_EXPORTS_W Ptr<LineSegmentDetector> createLineSegmentDetector(int _refine = LSD_REFINE_STD, double _scale = 0.8,double _sigma_scale = 0.6, double _quant = 2.0, double _ang_th = 22.5,double _log_eps = 0, double _density_th = 0.7, int _n_bins = 1024);
_refine:
LSD_REFINE_NONE:No refinement applied
LSD_REFINE_STD:Standard refinement is applied. E.g. breaking arches into smaller straighter line approximations.
LSD_REFINE_ADV:Advanced refinement. Number of false alarms is calculated, lines are refined through increase of precision, decrement in size, etc.
OpenCV直线检测(一)—— LSD相关推荐
- 直线检测之LSD算法及其OpenCV/C++案例实现
直线段检测算法-LSD:a Line Segment Detector 详细的算法解读,实际就是对论文<LSD:a Line Segment Detector>的分析,请戳:LSD算法 O ...
- opencv 直线检测
直线检测必须对着边缘检测的结果二值图检测,不能对着灰度图检测 二值图和边缘检测的结果图还是不一样的, 二值图的检测结果: api: cv.HoughLines(image, rho, theta, t ...
- OpenCV 直线检测应用:识别试卷中填空题
上图是待检测的图,主要目标是识别图中填空题的下划线,这样也就找到了试卷中的答案 1.配置OpenCV 环境:Win10+VS2015 + OpenCV3.4.1 1.下载OpenCV,到官网下载相对应 ...
- opencv 直线检测 java_OpenCV实现图像的直线检测
上一篇博文介绍了图像的Canny边缘检测,本文主要介绍图像的直线检测部分,主要使用概率霍夫变换来检测直线,调用的函数为HoughLinesP(),下面给出代码部分以及直线检测效果图: 1.代码部分: ...
- opencv 直线检测笔记
目录 c++ 检测垂直线 检测所有线: c++ C++: void HoughLinesP(InputArray image, OutputArray lines, double rho, doubl ...
- opencv判断 线夹角_python opencv实现直线检测并测出倾斜角度(附源码+注释)
由于学习需要,我想要检测出图片中的直线,并且得到这些直线的角度.于是我在网上搜了好多直线检测的代码,但是没有搜到附有计算直线倾斜角度的代码,所以我花了一点时间,自己写了一份直线检测并测出倾斜角度的代码 ...
- 形状识别之直线检测(LSD)
转自一篇基于直线检测的形状识别方法,不同于霍夫直线检测. 原文网址:https://blog.csdn.net/liujiabin076/article/details/74917605 LSD官网( ...
- 直线检测——对比M-LSD直线检测(基于深度学习)与霍夫曼直线检测
前言 1.直线检测在好多实现应用中能用到到,比如文档扫描,辅助驾驶中的车道线检测,传统的算法用的最多应该属于霍夫曼直线检测,但传统算法都有一个痛苦的调参过程和只能对优化过的使用场景有较好的结果,换个场 ...
- 直线检测之极坐标表示
直线检测算法LSD有比较好的效果,相比Hough变换检测直线更高效,然而有个缺点是同一条直线上的线段会断开,此时想到将检测到的直线转化为极坐标表示,然后根据极坐标的相似程度对线段合并.这里图像上的直线 ...
最新文章
- 使用VA助手如何快速添加注释(按doxygen注释规范)
- Webkit 最新 Javascript 引擎领先 Chrome
- linux 64位 shellcode,Linux Shellcode“你好,世界!”
- 软件工程结对开发作业02
- WEB接口测试之Jmeter接口测试自动化 (四)(持续构建)
- leetcode 141. Linked List Cycle
- 【转帖】windows命令行中java和javac、javap使用详解(java编译命令)
- python脚本判断一个数是否为素数的几种方法
- 我打败了妈妈 - 张朔
- MySQL二进制日志文件格式
- 站长说说之seo三大标签
- mysql 分离和附加数据库_分离数据库和附加数据库有什么区别
- maven文件彻底修改名字 Java文件修改名字
- java属于什么语言_java语言属于什么语言?
- 用手机模拟加密门禁卡【不用电脑】
- windows使用docker部署gitlab
- 用这几个扫一扫识别文字的软件,告别办公烦恼
- MSRA相关资料总结!
- 网络传真和传真服务器
- 48V输入智能磁吸灯-欧创芯OC5266 60V 1.5A 高恒流精度LED 恒流驱动器