Qt, Opencv, C++ - Как найти Hough Lines только для линий передачи в печатной плате?

Я написал код для поиска линий Hough для линий передачи в печатной плате. Мой код:

void MainWindow::houghline()
{
Canny( image, image_output, ui->slider_threshold_canny_1->value(), ui->slider_threshold_canny_2->value(), 3 );
cv::cvtColor(image_output,input_grey_image, CV_GRAY2BGR);
cv::vector<Vec4i> lines;
cv::HoughLinesP(image_output, lines, 1, CV_PI/180, 50, 50, 10 );
  for( size_t i = 0; i < lines.size(); i++ )
  {
    Vec4i l = lines[i];
    line( input_grey_image, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(0,0,255), 3, CV_AA);
  }

QPixmap image_input = cvMatToQPixmap(input_grey_image);
ui->l_image->setPixmap(image_input);
ui->l_image->setScaledContents(true);
ui->l_image->show();

}

Выходное изображение имеет неправильные линии, а также линия для промежутков между линиями передачи.

Как получить правильные неровные линии и неровные линии не между линиями передачи печатной платы?

Исходное изображение:Обнаружен хитрый край

Уровень изображения в пикселях: введите описание изображения здесь. На самом деле я не хочу сглаживать пиксели. Просто найдите пиксели, параллельные друг другу, и найдите расстояние между ними.

Возможно ли это с помощью преобразования Хафа? Есть ли какой-то другой метод для определения расстояния между краями пикселей

0 ответов

Другие вопросы по тегам