C#+EmguCV 在图像上进行基本绘图

EmguCV主要的绘图函数有一下几种:

CvInvoke.Line() 用于绘制线段

CvInvoke.Circle() 用于绘制圆形

CvInvoke.Ellipse() 绘制椭圆

CvInvoke.Rectangle() 绘制矩形

CvInvoke.PutText() 在图像上显示文字

来看看他们各个函数的参数和用法

1、CvInvoke.Line()

public static void Line(
	IInputOutputArray img,
	Point pt1,
	Point pt2,
	MCvScalar color,
	int thickness = 1,
	LineType lineType = LineType.EightConnected,
	int shift = 0
)

Parameters(参数含义)

img

Type: Emgu.CV.IInputOutputArray
The image(被绘制的图片)

pt1

Type: System.Drawing.Point
First point of the line segment(线段的第一个点,即起始位置)

pt2

Type: System.Drawing.Point
Second point of the line segment(线段的第二个点,即结束位置)

color

Type: Emgu.CV.Structure.MCvScalar
Line color(线段颜色)

thickness (Optional)

Type: System.Int32
Line thickness.(线段的宽度,以像素为单位)

lineType (Optional)

Type: Emgu.CV.CvEnum.LineType
Type of the line: 8 (or 0) - 8-connected line. 4 - 4-connected line. CV_AA - antialiased line.(四通道或八通道类型的枚举)

shift (Optional)

Type: System.Int32
Number of fractional bits in the point coordinates(点坐标中的分数位数,此参数可忽略不写)

这里比较要注意的地方是结构体CvScalar,他的用法如下:

CvScalar cvScalar( double val0, double val1=0,double val2=0, double val3=0 );

//最通用的,可初始化0-4个通道

举例:

a) 存放单通道图像中像素:cvScalar(255);

b) 存放三通道图像中像素:cvScalar(255,255,255);

2. inline CvScalar cvRealScalar( double val0 );

另外,他的通道顺序是BGR,这点需要小心。

 

2、CvInvoke.Circle()

函数参数和用法:

public static void Circle(
	IInputOutputArray img,
	Point center,
	int radius,
	MCvScalar color,
	int thickness = 1,
	LineType lineType = LineType.EightConnected,
	int shift = 0
)

Parameters

center

Type: System.Drawing.Point
Center of the circle (圆心的位置)

radius

Type: System.Int32
Radius of the circle.(圆形的半径)

thickness (Optional)

Type: System.Int32
Thickness of the circle outline if positive, otherwise indicates that a filled circle has to be drawn(圆形轮廓的宽度,如果是负数,那就是一个实心圆,否则就是空心圆)

其他的参数已经介绍过,不再赘述

3、CvInvoke.Ellipse()

参数和用法:

public static void Ellipse(
	IInputOutputArray img,
	Point center,
	Size axes,
	double angle,
	double startAngle,
	double endAngle,
	MCvScalar color,
	int thickness = 1,
	LineType lineType = LineType.EightConnected,
	int shift = 0
)

Parameters

img

Type: Emgu.CV.IInputOutputArray
Image

center

Type: System.Drawing.Point
Center of the ellipse

axes

Type: System.Drawing.Size
Length of the ellipse axes(横轴和纵轴的长度)

angle

Type: System.Double
Rotation angle(横轴旋转的角度)

startAngle

Type: System.Double
Starting angle of the elliptic arc(椭圆弧的起始角度)

endAngle

Type: System.Double
Ending angle of the elliptic arc(椭圆弧的结束角度)

 

其他参数不再赘述

 

还有一个重载方法

public static void Ellipse(
	IInputOutputArray img,
	RotatedRect box,
	MCvScalar color,
	int thickness = 1,
	LineType lineType = LineType.EightConnected,
	int shift = 0
)

这里需要注意第二个参数的用法

RotatedRect box

Type: Emgu.CV.Structure.RotatedRect
The box the define the ellipse area(定义椭圆的区域)

public RotatedRect(
	PointF center,
	SizeF size,
	float angle
)

Parameters

center

Type: System.Drawing.PointF
The center of the box

size

Type: System.Drawing.SizeF
The size of the box

angle

Type: System.Single
The angle of the box in degrees. Possitive value means counter-clock wise rotation(旋转角度)

 

 

4、CvInvoke.Rectangle()

参数和用法:

public static void Rectangle(
	IInputOutputArray img,
	Rectangle rect,
	MCvScalar color,
	int thickness = 1,
	LineType lineType = LineType.EightConnected,
	int shift = 0
)

这几个参数比较简单,不再赘述

5.CvInvoke.PutText()

参数和用法:

public static void PutText(
	IInputOutputArray img,
	string text,
	Point org,
	FontFace fontFace,
	double fontScale,
	MCvScalar color,
	int thickness = 1,
	LineType lineType = LineType.EightConnected,
	bool bottomLeftOrigin = false
)

Parameters

img

Type: Emgu.CV.IInputOutputArray
Input image

text

Type: System.String
String to print(需要显示的文字)

org

Type: System.Drawing.Point
Coordinates of the bottom-left corner of the first letter(第一个字符左下角的坐标)

fontFace

Type: Emgu.CV.CvEnum.FontFace
Font type.(字体)

fontScale

Type: System.Double
Font scale factor that is multiplied by the font-specific base size.(缩放因子)

举例:

C#+EmguCV 在图像上进行基本绘图_第1张图片

 

你可能感兴趣的:(EmguCV)