Я написал код для поиска линий 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();
}
Выходное изображение имеет неправильные линии, а также линия для промежутков между линиями передачи.
Как получить правильные неровные линии и неровные линии не между линиями передачи печатной платы?
Исходное изображение:
Пиксельный уровень изображения: введите описание изображения здесь
На самом деле я не хочу сглаживать пиксели. Просто найдите пиксели, параллельные друг другу, и найдите расстояние между ними.
Возможно ли это с помощью преобразования Хафа? Есть ли какой-то другой метод для определения расстояния между краями пикселей
Задача ещё не решена.
Других решений пока нет …