Opencv 如何寻找直线?
Posted cheungxiongwei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Opencv 如何寻找直线?相关的知识,希望对你有一定的参考价值。
void findLine(const std::string file,std::double_t min_distance_value = 100.0)
{
//https://github.com/opencv/opencv/blob/master/modules/imgproc/src/lsd.cpp
auto lsd = cv::createLineSegmentDetector(
cv::LSD_REFINE_NONE
);
auto img = cv::imread(file,cv::IMREAD_GRAYSCALE);
std::vector<cv::Vec4i> result;
lsd->detect(img, result);
lsd->drawSegments(img, result);
for(int i = 0;i < result.size();++i){
auto x1 = result[i][0];
auto y1 = result[i][1];
auto x2 = result[i][2];
auto y2 = result[i][3];
double distance_value = std::sqrt(std::pow((x1-x2),2) + std::pow((y1-y2),2));
if(distance_value > min_distance_value){
cv::line(img,cv::Point2i(x1,y1),cv::Point2i(x2,y2),cv::Scalar(0,0,255),3);
qDebug() << x1 << x2 << y1 << y2;
}
}
cv::namedWindow("FindLine", cv::WINDOW_GUI_EXPANDED);
cv::imshow("FindLine", img);
cv::waitKey(0);
}
以上是关于Opencv 如何寻找直线?的主要内容,如果未能解决你的问题,请参考以下文章
pyhton—opencv直线检测(HoughLines)找到最长的一条线