19.java openCV4.x 入门-Imgproc之图形绘制

专栏简介

💒个人主页
📖心灵鸡汤📖

我们唯一拥有的就是今天,唯一能把握的也是今天


建议把本文当作笔记来看,据说专栏目录里面有相应视频🤫
📰专栏目录

本节内容比较简单,但是很重要

一、直线绘制

  线段被图像边界裁剪。对于非抗锯齿的整数坐标线,使用8-连接或4-连接的Bresenham算法。粗线以圆角结束绘制。抗锯齿线使用高斯滤波器绘制。

字段

LINE_4 使用4点线段。这通常用于表示直线,使用起点和终点坐标
LINE_8 使用8点线段。这提供了更多的控制点,可以用于更精确地表示曲线或直线
LINE_AA 使用抗锯齿线段。抗锯齿技术用于平滑线条的边缘,使其看起来更平滑和自然

1.带箭直线绘制

1.在给定的图像上,从第一个点到第二个点绘制一个箭头线段

arrowedLine(Mat img, Point pt1, Point pt2, Scalar color, int thickness, int line_type, int shift, double tipLength)
参数:
img 要绘制线段的图像
pt1 线段的起始点坐标
pt2 线段的终点坐标
color 线段的颜色
thickness 线段的粗细
line_type 线段的类型。 参见 #LINE_*
shift 坐标点的小数位数
tipLength 箭头尖端的长度与箭头长度之间的关系
        //创建一个图像
        Mat mat = new Mat(400,400, CvType.CV_8UC3);
        //设置颜色
        mat.setTo(new Scalar(0,0,0));
        // 定义线段的起始点和终点坐标
        Point pt1 = new Point(50, 50);
        Point pt2 = new Point(350, 350);

        // 定义线段的颜色
        Scalar color = new Scalar(0, 0, 255);

        int lineType=Imgproc.LINE_AA;
        Imgproc.arrowedLine(mat,pt1,pt2,color,10, lineType, 0, 0.1);
        HighGui.imshow("mat",mat);
        HighGui.waitKey();

结果:
请添加图片描述

2.普通直线绘制

1.line

1.图像上绘制直线(线段被图像边界裁剪)

line(Mat img, Point pt1, Point pt2, Scalar color, int thickness, int lineType, int shift)
参数:
img 要绘制线段的图像
pt1 线段的起始点坐标
pt2 线段的终点坐标
color 线段的颜色
thickness 线段的粗细
line_type 线段的类型。 参见 #LINE_*
shift 坐标点的小数位数
        //创建矩阵
        Mat img = new Mat(200,300, CvType.CV_8UC3,new Scalar(0,0,0) );
        //定义线段开始结束坐标pt1
        Point pt1 = new Point(20,20);
        Point pt2 = new Point(100,100);
        Point pt3 = new Point(150,100);
        //定义绘制的颜色
        Scalar scalar= new Scalar(0,255,0);
        //定义线条粗细
        int thickness = 2;
        //定义线条类型
        int lineType=Imgproc.LINE_AA;
        //定义点坐标小数位数
        int shift=0;
        Imgproc.line(img,pt1,pt2,scalar,thickness,lineType,shift);
        Imgproc.line(img,pt2,pt3,scalar,thickness,lineType,shift);

        //显示
        HighGui.imshow("img",img);
        HighGui.waitKey();

结果:

在这里插入图片描述

2.polylines

1.绘制多段线

polylines(Mat img, java.util.List pts, boolean isClosed, Scalar color, int thickness, int lineType, int shift)
参数:
img 要绘制线段的图像
pts 包含多段线顶点的 java.util.List 对象。每个 MatOfPoint 对象表示多段线的一个单独部分
isClosed 一个布尔值,指示多段线是否闭合。如果为 true,则多段线闭合;如果为 false,则不闭合
color 线段的颜色
thickness 线段的粗细
line_type 线段的类型。 参见 #LINE_*
shift 坐标点的小数位数
 		Mat mat = new Mat(500,500, CvType.CV_8UC3);
        mat.setTo(new Scalar(255,255,255));

        List<MatOfPoint> pts = new ArrayList<>();
        MatOfPoint point = new MatOfPoint();
        point.fromArray(new Point(50,50),new Point(150,90),new Point(80,180),
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不要喷香水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值