• EmguCV 绘画图形


    1.Image类中绘图常用函数列表

    实践验证

    ///初始化图片

    private void Form1_Load(object sender, EventArgs e)

            {

                oldpic = new Emgu.CV.Image<Bgr, byte>(500, 400, new Bgr(Color.AliceBlue));

                pictureBox1.Image = oldpic.Bitmap;

            }

    /// 画-矩?形?

                Emgu.CV.Image<Bgr, byte> pic1 = oldpic.Clone();

                pic1.Draw(new Rectangle(100, 100, 120, 150), new Bgr(Color.Red), 5);

                pic1.Draw(new Rectangle(100, 100, 120, 150), new Bgr(Color.Red), 5, Emgu.CV.CvEnum.LineType.FourConnected, 1); //缩小为原来1/2,起点位置也一样

                pic1.Draw(new Rectangle(100, 100, 120, 150), new Bgr(Color.Red), 5, Emgu.CV.CvEnum.LineType.FourConnected, 2);//缩小为原来1/4,起点位置也一样

                pic1.Draw(new Rectangle(100, 100, 120, 150), new Bgr(Color.Red), 5, Emgu.CV.CvEnum.LineType.FourConnected, 3);//缩小为原来1/8,起点位置也一样

                pictureBox1.Image = pic1.Bitmap;

                pic1.Dispose();

    运行如下:

    画圆和椭圆类如画矩形 ,画文字

    Emgu.CV.Image<Bgr, byte> pic1 = oldpic.Clone();

                pic1.Draw(new CircleF(new PointF(100, 100), 50), new Bgr(Color.Red), 5);

                pic1.Draw(new Ellipse((RectangleF)(new Rectangle(100, 100, 120, 150))), new Bgr(Color.Red), 5); //注意类型转换

    string a = "OK";

    pic1.Draw(a, new Point(100, 250), Emgu.CV.CvEnum.FontFace.HersheyComplex, 5, new Bgr(Color.YellowGreen),5);

     

                pictureBox1.Image = pic1.Bitmap;

                pic1.Dispose();

    运行如下:

    工程实际用到画轮廓(根据点位进行),实际上又是调用画线的函数

    Point[] poi = new Point[6];

    Emgu.CV.Image<Bgr, byte> pic1 = oldpic.Clone();

                for (int i = 0; i < 6; i++)

                {

                    poi[i] = new Point(i * 50 + 50, i*i * 8 + 50);

    pic1.Draw(new Cross2DF(poi[i], 20, 20), new Bgr(Color.Black), 2);

                }

                pic1.Draw(poi, new Bgr(Color.Red),3,Emgu.CV.CvEnum.LineType.AntiAlias);

                pictureBox1.Image = pic1.Bitmap;

                pic1.Dispose();

    运行如下:

    绘制多线形跟画轮廓一样,主要看是否闭合,第二个参数不同

    pic1.DrawPolyline(poi,false, new Bgr(Color.Red), 3, Emgu.CV.CvEnum.LineType.AntiAlias);

    对于MAT类可以先转Image 绘完后再转回。

    特别指出在实际案例中会  统一一起绘制时采用此方式 int contourIdx 设定负数,全部一起

    public void Draw(IInputArray contours, int contourIdx, TColor color, int thickness = 1, LineType lineType = LineType.EightConnected, IInputArray hierarchy = null, int maxLevel = 2147483647, Point offset = null);

     

  • 相关阅读:
    什么是大小端
    mina
    出现jar包找不到的问题解决方案
    InnoDB 静态数据加密的常见问题合集
    mysqldump 数据库备份程序,mysqldump 选项合集
    出现The MySQL server is running with the --secure-file-priv option so it cannot问题的原因
    小睡一会,做了一个梦
    IntelliJ IDEA is a solution that appears after importing a project with a clock icon(idea导入项目之后出现时钟的解决方案)
    IntelliJIDE不显示项目文件夹的问题
    夏天的记忆
  • 原文地址:https://www.cnblogs.com/nulidemaomaochong/p/8502611.html
Copyright © 2020-2023  润新知