别人没那么重要,我也没那么重要,好好活着,把能做的小事做好,够不到的东西就放弃,承认就好。做一个心情好能睡着的人,你所有事情都会在正轨上。

C#OpenCV算子-绘图

3.1 多边形填充

函数原型:

void FillPoly(Mat img, IEnumerable<IEnumerable<Point>> pts, Scalar color, LineTypes lineType = LineTypes.Link8, int shift = 0, Point? offset = null)
/*参数:
    Img:输入图像
    Pts:多边形角点列表
    Color:多边形的填充颜色
    lineType:多边形的线条类型
    shift:坐标点小数点位数
    offset:所有角点的可选偏移量
功能:
    绘制一个多边形
*/

例子:

static void Main(string[] args)
{
    Mat src1 = new Mat(@"C:\Users\Administrator\Desktop\1.jpg");
    List<Point> pts = new List<Point>();
    pts.Add(new Point(10, 10));
    pts.Add(new Point(10, 100));
    pts.Add(new Point(300, 300));
    List<List<Point>> ptss = new List<List<Point>>() { pts };
    Cv2.FiiPoly(src1, ptss, new Scalar(0, 0, 255));
    Cv2.ImShow("test", src1);
    Cv2.WaitKey();
}

实验样例:

Src1

dst

 

 


3.2 画矩形

函数原型:

void Rectangle(InputOutputArray img, Rect rect, Scalar color, int thickness = 1, LineTypes lineType = LineTypes.Link8, int shift = 0)
/*
参数:
    img,画矩形的对象
    rect,确定矩形的另一种方式,给左上角坐标和长宽
    color,指定矩形的颜色或亮度(灰度图像),
    scalar,颜色.
    thickness,矩形边框的粗细. 负值(like cv_filled)表示要画一个填充的矩形
    linetype,边框线型. 
    shift –坐标点的小数点位数    
功能:
    在图片上绘制一个矩形。
*/

例子:

static void Main(string[] args)
{
    Mat src1 = new Mat(@"C:\Users\Administrator\Desktop\1.jpg");
    Rect rect = new Rect(50, 50, 100, 150);
    Cv2.Rectangle(src1, rect, new Scalar(0, 0, 255));
    Cv2.ImShow("test", src1);
    Cv2.WaitKey();
}

实验样例:

Src1
结果

 

 

 


3.3 画圆

函数原型:

void Circle(InputOutputArray img, Point center, int radius, Scalar color, int thickness = 1, LineTypes lineType = LineTypes.Link8, int shift = 0)
/*
参数:
    img,要画圆的那个图像.
    center,圆心坐标.
    radius,半径.
    color,圆边框颜色.
    thickness,正值表示圆边框宽度. 负值表示画一个填充圆形
    linetype,圆边框线型
    shift,圆心坐标和半径的小数点位数
功能:
    在图片上绘制一个圆形
*/

例子:

static void Main(string[] args)
{
    Mat src1 = new Mat(@"C:\Users\Administrator\Desktop\1.jpg");
    Point center = new Point(150, 100);
    Cv2.Circle(src1, center, 30, new Scalar(0, 0, 255));
    Cv2.ImShow("test", src1);
    Cv2.WaitKey();
}

实验样例:

Src1

结果

 

 

 


3.4 画线

函数原型:

void Line(InputOutputArray img, Point pt1, Point pt2, Scalar color, int thickness = 1, LineTypes lineType = LineTypes.Link8, int shift = 0)
/*
参数:
    img,图像.
    pt1,线条起点.
    pt2,线条终点.
    color,线条颜色.
    thickness,线条宽度.
    linetype,线型
    shift,坐标点小数点位数.
功能:
    在图片上绘制一条直线
*/

例子:

static void Main(string[] args)
{
    Mat src1 = new Mat(@"C:\Users\Administrator\Desktop\1.jpg");
    Point p1 = new Point(150, 100);
    Point p2 = new Point(100,200);
    Cv2.Line(src1, p1, p2, new Scalar(0, 0, 255));
    Cv2.ImShow("test", src1);
    Cv2.WaitKey();
}

实验样例:

Src1

结果

 

 

 


3.5 写字

函数原型:

void PutText(InputOutputArray img, string text, Point org, HersheyFonts fontFace, double fontScale, Scalar color, int thickness = 1, LineTypes lineType = LineTypes.Link8, bool bottomLeftOrigin = false)
/*
参数:
    img,显示文字所在图像.
    text,待显示的文字.
    org,文字在图像中的左下角 坐标.
    fontface,字体类型.
    fontscale,字体大小.
    color,文本颜色.
    thickness,写字的线的粗细.
    bottomleftorigin,true, 图像数据原点在左下角. otherwise, 图像数据原点在左角.
功能:
    在图片上绘制文本
*/

例子:

static void Main(string[] args)
{
    Mat src1 = new Mat(@"C:\Users\Administrator\Desktop\1.jpg");
    Point p1 = new Point(150, 100);
    Cv2.PutText(src1, "hey!", p1, HersheyFonts.HersheyComplex, 3, new Scalar(0, 0, 255), 2);
    Cv2.ImShow("test", src1);
    Cv2.WaitKey();
}

实验样例:

Src1

结果

 

 

 

 

/*-------------------------------------------------------------------------------------------------------

笔者说明:

  该笔记来源于本人学习OpenCvSharp时的资料,

  分享出来只是为了供大家学习,并且为了自己以后想要用的时候方便寻找。

时间:2023年3月12日

------------------------------------------------------------------------------------------------------------*/

 

posted @ 2023-03-12 20:50  一路狂奔的乌龟  阅读(175)  评论(0)    收藏  举报
返回顶部