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);
}
Но результат также выглядит странно (и расчеты занимают много времени) :
[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;