版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
教程VB.net版本请访问:EmguCV学习笔记 VB.Net 目录-CSDN博客
教程C#版本请访问:EmguCV学习笔记 C# 目录-CSDN博客
笔者的博客网址:https://blog.csdn.net/uruseibest
教程配套文件及相关说明以及如何获得pdf教程和代码(博客上的教程内容会和pdf教程一致,教程中也会包含所有代码),请移步:EmguCV学习笔记
3.4 椭圆
使用Cvinvoke的Ellipse方法绘制椭圆,两种定义如下:
1、定义一:
Public Shared Sub Ellipse(img As Emgu.CV.IInputOutputArray, box As Emgu.CV.Structure.RotatedRect, color As Emgu.CV.Structure.MCvScalar, Optional thickness As Integer = 1, Optional lineType As Emgu.CV.CvEnum.LineType = 8, Optional shift As Integer = 0)
参数说明(其余参数请参考Line方法):
- box:一个旋转矩形。详细请参看【3.6 旋转矩形】
2、定义二:
Public Shared Sub Ellipse(img As Emgu.CV.IInputOutputArray, center As System.Drawing.Point, axes As System.Drawing.Size, angle As Double, startAngle As Double, endAngle As Double, color As Emgu.CV.Structure.MCvScalar, Optional thickness As Integer = 1, Optional lineType As Emgu.CV.CvEnum.LineType = 8, Optional shift As Integer = 0)
参数说明(其余参数请参考Line方法):
- center:椭圆的中心点,PointF类型。
- axes:椭圆的长轴和短轴的长度,SizeF类型。
- angle:椭圆的旋转角度,以度为单位。
- startAngle:椭圆的起始角度,以度为单位。
- endAngle:椭圆的结束角度,以度为单位。
例如以下代码:
CvInvoke.Ellipse(img, New PointF(100, 100), New SizeF(50, 80), 30, 0, 360, New MCvScalar(0, 0, 255), 2)
在图像上绘制了一个中心坐标为(100, 100),长轴为50,短轴为80,旋转角度为30度的红色椭圆,边框线宽为2个像素。
【代码位置:frmChapter3】Button4_Click
'绘制椭圆形
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Dim mcs1 As New MCvScalar(0, 0, 255)
Dim mcs2 As New MCvScalar(0, 255, 0)
'旋转20度的旋转矩形
Dim rrec As New RotatedRect(New PointF(400, 300), New SizeF(200, 100), 20)
'椭圆
CvInvoke.Ellipse(mBg, rrec, mcs1, 3)
'填充椭圆
CvInvoke.Ellipse(mBg, rrec, mcs2, -1)
'弧形,不旋转,弧形角度范围从100到180度
CvInvoke.Ellipse(mBg, New Point(200, 300), New Size(100, 80), 0, 100, 180, mcs1, 3)
'扇形,不旋转,扇形角度范围从100到180度
CvInvoke.Ellipse(mBg, New Point(200, 300), New Size(100, 80), 0, 100, 180, mcs2, -1)
'扇形,旋转60度,扇形角度范围从100到180度,同上面的扇形做对比
CvInvoke.Ellipse(mBg, New Point(100, 200), New Size(100, 80), 60, 100, 180, mcs2, -1)
ImageBox1.Image = mBg
End Sub
运行后如下图所示:
图3-4 绘制椭圆、弧形、扇形