代码如下:

        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);

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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐