0

我正在尝试使用opencv获取两条线的宽度或厚度!我正在使用该threshold函数来获得更高的线条表示形式,例如:

阈值结果

我的问题是如何以像素为单位获得线条的粗细,我尝试使用该HoughLinesP功能,但我不确定结果是否正确: houlinesP 结果

这是我尝试过的代码:

.........................................
    vector<Mat> laserChannels;
    vector<Vec4i> lines;
        Mat laserCross;
Mat otsu;

    while (key!= 27){

        cap >> laserCross;
        split(laserCross, laserChannels);

threshold(laserChannels[2], otsu, 50, 255, THRESH_BINARY);

HoughLinesP( otsu, lines, 1, CV_PI/2, 1, 400,100  );

 for( size_t i = 0; i < lines.size(); i++ )
    {
        line( laserCross, Point(lines[i][0], lines[i][1]),
            Point(lines[i][2], lines[i][3]), Scalar(0,0,255), 1, 8 );
     }

 std::cout << lines.size()<< std::endl;  
................................................

线条大小是 24 25 这是否意味着线条是 12 像素厚?提前感谢您的帮助!

4

1 回答 1

0

我建议您首先使用形态过滤器。你的第一张照片需要一些平滑。

之后,您可以使用Image-erode(Image).

接下来你可以做的是将霍夫线拟合到边界图像并获得最强大的线。

瞧,您将获得最强大的 n 行分析参数。(Rho & Theta)

于 2013-11-11T09:42:16.460 回答