我编写了一个代码来查找 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传输线之间的霍夫线?
原图:
图像的像素级别:在此处输入图像描述 实际上我不想平滑像素。只需找到彼此平行的像素并找到它们之间的距离。
是否可以通过霍夫变换。有没有其他方法可以找到边缘像素之间的距离