OpenCVSharp 笔记3 绘制直线、圆、椭圆、矩形、多边形、文本

代码如下:

        static void Main(string[] args)
        {
            Mat src = new Mat("lenna.png", ImreadModes.AnyColor | ImreadModes.AnyDepth);

            Point pt1 = new Point(100, 100);
            Point pt2 = new Point(300, 300);
            Scalar scalar = new Scalar(0, 255, 0);
            Cv2.Line(src, pt1, pt2, scalar, 1, LineTypes.AntiAlias, 0);//画线 参数1:操作图像 2:直线起点  3:直线终点 4:颜色 5:线宽  6:线型  7:缩放参数(0为不缩放)

            Cv2.Rectangle(src, pt1, pt2, scalar, 5, LineTypes.AntiAlias, 0);//绘制矩形 参数1:操作图像 2:矩形左上点 3:矩形右下点 4:颜色 5:线宽  6:线型  7:缩放参数(0为不缩放)

            pt1 = new Point(200, 200);
            scalar = new Scalar(0, 100, 0);
            Cv2.Circle(src, pt1, 100, scalar, 3, LineTypes.AntiAlias, 0);//绘制园 参数1:操作图像 2:圆心 3:半径 4:颜色 5:线宽  6:线型  7:缩放参数(0为不缩放)

            Size size = new Size(80, 50);
            scalar = new Scalar(0, 100, 100);
            Cv2.Ellipse(src, pt1, size, 180, 90, 270, scalar, -1, LineTypes.AntiAlias, 0);//绘制椭圆 参数1:操作图像 2:椭圆中心 3:以椭圆长轴和短轴长度为边界的矩形区域,椭圆就绘制在这个矩形区域 4:椭圆旋转角度 5:起始角度  6:终止角度  7:颜色 8:线宽 9:线型 10:缩放参数(0为不缩放)

            List<Point> pts1 = new List<Point>
            {
                new Point(400,400),
                new Point(400,500),
                new Point(500,500),          
                new Point(500,400),
                new Point(450,350),
                new Point(400,400)
            };
            List<Point> pts2 = new List<Point>
            {
                new Point(10,10),
                new Point(10,150),
                new Point(150,150),
                new Point(150,10),
                new Point(10,10)
            };
            List<List<Point>> pts = new List<List<Point>>() { pts1, pts2 }; //包含几个矩阵,就绘制几个多边形
            Scalar color = new Scalar(0, 100, 33);
            //Cv2.FillPoly(src, pts, color, LineTypes.Link8, 0, new Point(0, 0));//多边形填充绘制
            Cv2.Polylines(src, pts, true, scalar, 10, LineTypes.AntiAlias, 0);//绘制多边形 


            Cv2.DrawContours(src, pts,-1, new Scalar(0,255,0),-1, LineTypes.AntiAlias);//contourIdx参数:绘制轮廓的编号,如果是负数,则绘制所有的轮廓

            Cv2.PutText(src, "Opencv", new Point(0, 100), HersheyFonts.Italic, 3, color, 1, LineTypes.AntiAlias, false);//绘制文本

            Cv2.ImShow("src image", src);
            Cv2.WaitKey();
        }

线宽:-1时代表填充区域
shift:shift是用来做图像缩小的,会把中心点坐标以及线的长度按比例缩小,假设原来的数字为D,变换后的数字为d,则具体公式是:
d = D/(2^shift);

效果如下:
在这里插入图片描述

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于绘制多边形,我会为您提供一些OpenGL学习笔记。 首先,我们需要了解一下OpenGL绘制多边形的基本流程。OpenGL绘制多边形的过程包括三个基本步骤:指定顶点数据、指定绘制方式和执行绘制。 指定顶点数据:在OpenGL中,我们可以使用glVertex等函数来指定多边形的顶点。例如,如果我们要绘制一个三角形,我们可以使用以下代码: ``` glBegin(GL_TRIANGLES); glVertex3f(0.0f, 1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 0.0f); glVertex3f(1.0f, -1.0f, 0.0f); glEnd(); ``` 其中,glBegin和glEnd函数用来指定绘制的方式,GL_TRIANGLES表示绘制三角形。glVertex3f函数用来指定三角形的三个顶点,每个顶点由三个坐标值组成。 指定绘制方式:OpenGL支持多种绘制方式,例如GL_TRIANGLES、GL_TRIANGLE_STRIP、GL_TRIANGLE_FAN等。在上面的代码中,我们使用了GL_TRIANGLES来指定绘制三角形的方式。 执行绘制:最后,我们需要调用glDrawArrays函数来执行绘制。例如,如果我们要绘制一个三角形,我们可以使用以下代码: ``` glDrawArrays(GL_TRIANGLES, 0, 3); ``` 其中,GL_TRIANGLES表示绘制三角形的方式,0表示顶点数组的起始位置,3表示顶点的数量。 以上就是OpenGL绘制多边形的基本流程,下面我们来看一下如何绘制着色多边形绘制着色多边形的过程与绘制普通多边形的过程基本相同,只需要在绘制前调用glColor函数来指定颜色即可。例如,如果我们要绘制一个红色的三角形,我们可以使用以下代码: ``` glBegin(GL_TRIANGLES); glColor3f(1.0f, 0.0f, 0.0f); // 指定颜色为红色 glVertex3f(0.0f, 1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 0.0f); glVertex3f(1.0f, -1.0f, 0.0f); glEnd(); ``` 其中,glColor3f函数用来指定颜色,三个参数分别表示红、绿、蓝三个颜色通道的值,取值范围为0到1。 希望以上内容能够帮助到您。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值