OpenCVSharp 笔记3 绘制直线、圆、椭圆、矩形、多边形、文本
程序员文章站
2022-03-31 19:44:02
...
代码如下:
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(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, pp, color, LineTypes.Link8, 0, new Point(0, 0));
Cv2.Polylines(src, pts, false, scalar, 3, LineTypes.AntiAlias, 0);//绘制多边形
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);