【问题标题】:Android Java OpenCV. Problem with detecting and drawing Hough Lines安卓 Java OpenCV。检测和绘制霍夫线的问题
【发布时间】:2019-10-11 21:35:36
【问题描述】:

我尝试在安卓手机上使用 OpenCV 来检测线路。我只是初学者,我不完全理解这段代码,因为我是从互联网上改编的。最后我只看到一行,而不是全部。有人可以帮我吗?

    Bitmap bmp = ((BitmapDrawable)viewImage.getDrawable()).getBitmap();
    Mat grayMat = new Mat();
    Mat cannyEdges = new Mat();
    Mat lines = new Mat();
    Mat originalMat = new Mat();
    Utils.bitmapToMat(bmp, originalMat);

    //Converting the image to grayscale
    Imgproc.cvtColor(originalMat, grayMat, Imgproc.COLOR_BGR2GRAY);
    Imgproc.Canny(grayMat, cannyEdges, 10, 100);
    Imgproc.HoughLinesP(cannyEdges, lines, 1, Math.PI / 180, 50, 20, 20);

    Mat houghLines = new Mat();
    houghLines.create(cannyEdges.rows(), cannyEdges.cols(), CvType.CV_8UC1);

    //Drawing lines on the image
    for (int i = 0; i < lines.cols(); i++) {
        double[] points = lines.get(0, i);
        double x1, y1, x2, y2;
        x1 = points[0];
        y1 = points[1];
        x2 = points[2];
        y2 = points[3];
        Point pt1 = new Point(x1, y1);
        Point pt2 = new Point(x2, y2);

        //Drawing lines on an image
        Imgproc.line(houghLines, pt1, pt2, new Scalar(255, 0, 0), 1);
    }

    //Converting Mat back to Bitmap
    Utils.matToBitmap(houghLines, bmp);
    viewImage.setImageBitmap(bmp);

【问题讨论】:

    标签: java android opencv hough-transform houghlines


    【解决方案1】:

    您确定精明的输出或您的输入有足够的线路来检测吗?此代码将打印所有行。所以我猜是你的数据问题。

    先看canny输出有多少行。如果是canny改变canny参数引起的

    Utils.matToBitmap(cannyEdges, bmp);
    viewImage.setImageBitmap(bmp);
    

    那么如果canny能看到很多直线而没有输出呢?别着急,改变houghline参数

    【讨论】:

    • 感谢您的回答! Canny 给出了所有的线,所以问题是 Houghline 的参数。我将 minLineLength 从 20 更改为 0,将 maxLineGap 从 20 更改为 50,将阈值从 50 更改为 100,theta 从 Pi/180 更改为 Pi/360。但结果是一样的。附言这是我用于测试的image。结果是上线。
    • 鉴于您的数据,这条线似乎不够直。您可能希望通过使用形态学操作来放松检测到的精明边缘。形态学就是增加canny的line with,使得hough的角距空间更容易得到最大值。它有点难以用文字来解释。绘制这些概念的画笔。
    猜你喜欢
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 2012-07-06
    • 1970-01-01
    • 2020-08-11
    相关资源
    最近更新 更多