0

我编写了一个代码来查找 PCB 中传输线的霍夫线。我的代码:

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();

}

输出图像具有不正确的霍夫线,并且在传输线之间还有一条用于空间的霍夫线。

如何获得合适的霍夫线和不在PCB传输线之间的霍夫线?

原图: Canny 边缘检测图像

图像的像素级别:在此处输入图像描述 实际上我不想平滑像素。只需找到彼此平行的像素并找到它们之间的距离。

是否可以通过霍夫变换。有没有其他方法可以找到边缘像素之间的距离

4

0 回答 0