1) подготовить изображение (Blur, canny, ect.) < /p>
2) обнаружение строк < /p>
3). Изображение:

code:
Код: Выделить всё
vector lines_std;
Ptr ls = createLineSegmentDetector(LSD_REFINE_NONE);
ls->detect(grayMat, lines_std);
< /code>
Но здесь я столкнулся с некоторыми проблемами (и смотрит, нет никакого способа настроить CreatelinesegmentDetector < /code>) < /em>:
Не все строки были обнаружены; строки обнаруживают не в центре, а по бокам и иногда в левой или правой стороне, но я должен получить центр линии Билда, потому что это будет использоваться в расчетах только в расчетах. < /p>
Итак, как правильный способ найти все строки (и каждая строка только один раз в центре жирной линии)? />
cv::HoughLines(grayMat, lines, 1, CV_PI/90, 100 , 100, 0 );
for( size_t i = 0; i < lines.size(); i++ )
{
float rho = lines[i][0], theta = lines[i][1];
cv::Point pt1, pt2;
double a = cos(theta), b = sin(theta);
double x0 = a*rho, y0 = b*rho;
pt1.x = cvRound(x0 + 1000*(-b));
pt1.y = cvRound(y0 + 1000*(a));
pt2.x = cvRound(x0 - 1000*(-b));
pt2.y = cvRound(y0 - 1000*(a));
cv::line( originalMat, pt1, pt2, cv::Scalar(0,255,0), 3, CV_AA);
}
Подробнее здесь: https://stackoverflow.com/questions/421 ... -detection