LSD算法是一种直线检测的算法,比hough效果好,作者将代码和文章上传了,详见http://www.ipol.im/pub/art/2012/gjmr-lsd/。
opencv3.0也集成了其算法,这边说下如何在opencv里面调用。下面代码其实也是opencv给的example 可以在http://docs.opencv.org/master/d8/dd4/lsd_lines_8cpp-example.html#a9
#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 0
Can