c# OpenCvSharp 画线 矩形 圆形 椭圆

c# OpenCvSharp 画线 矩形 圆形 椭圆

 

using OpenCvSharp;
using OpenCvSharp.Extensions;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace app
{
    public partial class FrmMain : Form
    {
        public FrmMain()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 画线
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnLine_Click(object sender, EventArgs e)
        {
            // 创建一张大小为500*500图像
            Mat src = new Mat(500, 500, MatType.CV_8UC3, new Scalar(255, 255, 255));

            OpenCvSharp.Point pStart = new OpenCvSharp.Point(10, 30);
            OpenCvSharp.Point pEnd;
            pEnd.X = 300;
            pEnd.Y = 50;

            // 红色线条
            Scalar color = new Scalar(0, 0, 255);

            /*
            img: 源图像
            pt1:	第一个点
            pt2:	第二个点
            color   线条颜色
            thickness:	线条的厚度(粗细)
            lineType: 线条类型 (枚举值)
            shift 点坐标中的小数位数。[默认值为0]
            */
            Cv2.Line(src, pStart, pEnd, color, 1, LineTypes.Link8);

            Cv2.ImShow("原图:", src);
            Cv2.WaitKey();
        }

        /// <summary>
        /// 绘制矩形
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnRectangle_Click(object sender, EventArgs e)
        {
            // 创建一张大小为500*500图像
            Mat src = new Mat(500, 500, MatType.CV_8UC3, new Scalar(255, 255, 255));

            Rect rect = new Rect(100, 200, 100, 100);
            // 红色线条
            Scalar color = new Scalar(0, 0, 255);

            /*
            img: 源图像
            rect:	举行对象
            color   线条颜色
            thickness:	线条的厚度(粗细)
            lineType: 线条类型 (枚举值)
            shift 点坐标中的小数位数。[默认值为0]
            */
            Cv2.Rectangle(src, rect, color, 2, LineTypes.AntiAlias); // LineTypes.AntiAlias:反锯齿效果


            Cv2.ImShow("原图:", src);
            Cv2.WaitKey();
        }

        /// <summary>
        /// 绘制圆形
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnCricle_Click(object sender, EventArgs e)
        {
            // 创建一张大小为500*500图像
            Mat src = new Mat(500, 500, MatType.CV_8UC3, new Scalar(255, 255, 255));

            // 红色线条
            Scalar color = new Scalar(0, 0, 255);
            OpenCvSharp.Point conter = new OpenCvSharp.Point(src.Cols / 2, src.Rows / 2);
            Cv2.Ellipse(src, conter, new OpenCvSharp.Size(src.Cols / 4, src.Cols / 4), 90, 0, 360, color, 2, LineTypes.Link8);

            Cv2.ImShow("原图:", src);
            Cv2.WaitKey();
        }

        /// <summary>
        /// 绘制椭圆
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnEllipse_Click(object sender, EventArgs e)
        {
            // 创建一张大小为500*500图像
            Mat src = new Mat(500, 500, MatType.CV_8UC3, new Scalar(255, 255, 255));

            // 红色线条
            Scalar color = new Scalar(0, 0, 255);
            /*
            1.背景图片
            2.中心点  椭圆的长轴和短轴
            3.椭圆的旋转的角度
            4.起始角度
            5.结束角度
            6.颜色
            7.线条宽度 默认 1
            8.边界类型 默认 Link8
            9.中心坐标和坐标轴值的小数位数,默认0
            */
            Cv2.Ellipse(src, new OpenCvSharp.Point(250, 250), new OpenCvSharp.Size(100, 200), 90, 0, 360, color, 3, LineTypes.Link8);

            Cv2.ImShow("原图:", src);
            Cv2.WaitKey();
        }

        /// <summary>
        /// 绘制文字
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnText_Click(object sender, EventArgs e)
        {
            // 创建一张大小为500*500图像
            Mat src = new Mat(500, 500, MatType.CV_8UC3, new Scalar(255, 255, 255));

            // 红色线条
            Scalar color = new Scalar(0, 0, 255);

            Cv2.PutText(src, "Hello", new OpenCvSharp.Point(200, 200), HersheyFonts.HersheySimplex, 1, color, 2, LineTypes.Link4);

            Cv2.ImShow("原图:", src);
            Cv2.WaitKey();
        }
    }
}

 

发表回复

您的电子邮箱地址不会被公开。