2016-06-01 2 views
0

Я хочу вызвать функцию, чтобы сравнить все сегменты, которые я вычисляю в своем коде, и узнать, сколько полигонов есть на мой взгляд, состоящих из прямых линий, которые состоит из 3, 4 или более сегментов, которые образуют замкнутый контур, или в качестве альтернативы я хотел бы знать, сколько пара прямых отрезков образует угол (таким образом, имеет общую точку):поиск сегментов, которые образуют угол с HoughLinesP и C++

  vector<Vec4i> lines; 
     HoughLinesP(dst, lines, 1, CV_PI/180, 80, 50, 10); 
     for(size_t i = 0; i < lines.size(); i++) 
      { 
      Vec4i l = lines[i]; 
      double x = l[0]-l[2]; 
      double y = l[1]-l[3]; 
      double dist = pow(x,2) + pow(y,2); 
      dist= sqrt(dist); 
      segments.push_back(round(dist)); 
      line(cdst, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(0,0,255), 3, CV_AA); 
      } 

alternatvely, пытаюсь упростить , как я могу вычислить количество пересечений между сегментами?

+0

Изображение, которое вы использовали для вычисления Hough, было бы полезно – Miki

+0

В основном я должен обнаруживать геометрические особенности изображений. Я хотел бы иметь возможность вычислить, например, число окон в изображении, тогда я рассматриваю окно как многоугольник, состоящий из 4 сегментов, которые образуют замкнутый путь –

ответ

0

Если я правильно понял, учитывая многоугольник, вы хотите знать, сколько у него вершин.

Я думаю, что хороший вариант - использовать cv::approxPolyDP, что даст вам минимальное количество вершин, необходимых для представления вашего многоугольника. В соответствии с количеством вершин, вы можете классифицировать полигоны.

Вы можете посмотреть блог pyImageSerach для хорошего учебника (в Python).

Смежные вопросы