Opencv——根据轮廓创建圆形边界框

一、创建矩形边界框
1、通过 boundingRect
(MatOfPoint points) 来计算包围轮廓的矩形框

2、通过 rectangle(Mat img, Point pt1, Point pt2, Scalar color, int thickness) 来画出对应的矩形

、创建圆形边界框

主要函数:

public static void minEnclosingCircle(MatOfPoint2f points,
                                      Point center,
                                      float[] radius)

输出圆心中点坐标、半径

public static void circle(Mat img,
                          Point center,
                          int radius,
                          Scalar color)

画出圆形边界图

对应代码如下:

public static void getCircle() {

        Mat img =Imgcodecs.imread("/Users/wuxi/Pictures/blog/base.png", 0);

        Mat circle =img.clone();

        //图像的模糊化Blur处理,输出 dstImage 3*3,平滑处理
        Imgproc.blur(img, img, new Size(3, 3));

        Imgcodecs.imwrite("/Users/wuxi/Pictures/picture/M0_1.jpg", img);

        //边缘检测
        Imgproc.Canny(img, img, 40, 80);

        Imgcodecs.imwrite("/Users/wuxi/Pictures/picture/M0_2.jpg", img);

        List<MatOfPoint> contours = new ArrayList<>();

        Mat hierarchy = new Mat();

        Imgproc.findContours(img, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);

        //计算圆形边界需要转换成MatOfPoint2f
        MatOfPoint2f points = new MatOfPoint2f(contours.get(0).toArray());

        //圆心坐标
        Point center = new Point();
        //半径
        float[] radius = {0};

        //计算最小的包围圆
        Imgproc.minEnclosingCircle(points, center, radius);

        //画出圆形边界
        Imgproc.circle(circle,center, (int) radius[0],new Scalar(0,0,255),2);

        Imgcodecs.imwrite("/Users/wuxi/Pictures/picture/M0_3.jpg", circle);


    }

图片处理过程为:

参考:

https://docs.opencv.org/3.4.2/javadoc/index.html

http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/shapedescriptors/bounding_rects_circles/bounding_rects_circles.html#bounding-rects-circles

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值