获得阈值结果的宽度(线)

时间:2013-11-11 09:13:22

标签: c++ opencv

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

threshold result

我的问题是如何获取像素的线条粗细,我尝试使用HoughLinesP函数,但我不确定结果是否正确: houlinesP result

这是我尝试的代码:

.........................................
    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像素? 在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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

之后,您可以使用Image-erode(Image)获得行边界。

接下来你可以做的是,使Hough Lines适合边界图像并获得最强大的n行。

Voilà,你获得最强大的线条,分析参数。 (Rho&amp; Theta)