【问题标题】:OpenCV how to crop circles detected using Hough transformin JavaOpenCV如何在Java中使用霍夫变换进行麦田圈检测
【发布时间】:2018-05-08 22:33:13
【问题描述】:

我想裁剪我使用霍夫变换检测到的圆圈,我成功地检测到了圆圈,但我不明白如何裁剪它们。 这是我用于霍夫变换的代码:

for( int i=0;i<circles.cols();i++){
            Point center = new Point( Math.round(circles.get(0,i)[0]), 
            Math.round(circles.get(0, i)[1]));                      
            System.out.println("X============="+i+":"+circles.get(0,i)[0]);                                
            System.out.println("Y============="+i+":"+circles.get(0,i)[1]);
            int radius = (int) Math.round(circles.get(0, i)[2]);
            //System.out.println("--Rayon--:"+radius);
            Imgproc.circle( image, center, radius, new Scalar(0,0,255),3);//radius, color)   `

【问题讨论】:

  • 霍夫圆变换的结果为您提供中心像素和半径。这应该足以定义包含圆圈的感兴趣区域,您可以将其插入新矩阵以创建裁剪图像。
  • 我没明白,如果你能解释更多或给我一个算法,可以吗?
  • 裁剪到底是什么意思?我从来没有使用过 JavaCV,但如果你具体说明你的意思,我可能会找到一个资源来展示如何为圆圈创建 ROI 或掩码。
  • 我的意思是我想隔离我在矩阵中使用霍夫变换检测到的圆圈。

标签: java opencv crop


【解决方案1】:

您可以像这样裁剪图像:

Mat initialImage = ...
Rect crop = new Rect(new Point(column,row),new Size(width,height)); // crop area begins at Point(column,row) with Size(width,height)
Mat croppedImage = new Mat(initialImage,crop);

【讨论】:

    猜你喜欢
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    相关资源
    最近更新 更多