Emgu 學習(3) 繪圖,使用鼠標繪圖,使用trackbar

繪圖

    class Program
    {
        static void Main(String[] args)
        {
            Mat img = new Mat(600, 400, DepthType.Cv8U, 3);
            img.SetTo(new Bgr(0, 0, 0).MCvScalar);
            //繪製一條黃色,線寬爲4 的反鋸齒線段
            CvInvoke.Line(img, new Point(10, 10), new Point(100, 250), new MCvScalar(0, 255, 255),4,LineType.AntiAlias);
            //繪製圓心爲200,100,半徑爲50,線寬爲15的紅色空心圓
            CvInvoke.Circle(img, new Point(200, 100), 50, new MCvScalar(0, 0, 255), 15, LineType.AntiAlias);
            //繪製左上角200,300寬高爲150,100的綠色矩形框
            CvInvoke.Rectangle(img, new Rectangle(200, 300, 150, 100), new MCvScalar(0, 255, 0), 1);
            //繪製中心爲200,200,大小爲150,120,旋轉40度,顏色爲cyan的橢圓
            CvInvoke.Ellipse(img, new RotatedRect(new Point(200, 200), new Size(150, 120), 40), new MCvScalar(255, 255, 0), 3);
            //繪製文字
            CvInvoke.PutText(img, "CTC", new Point(100, 100), FontFace.HersheyComplex, 3, new MCvScalar(0, 255, 255), 2);

            
            CvInvoke.Imshow("draw", img);
            CvInvoke.WaitKey(0);

        }
    }

效果spa

 

 

使用鼠標繪製矩形

 效果以下,使用鼠標中鍵拖拉矩形框。3d

 

 

 

中間黑色的控件是ImageBox,沒有縮放code

        Point pt = new Point();
        Mat frame = null;
        public Form1()
        {
            InitializeComponent();
            frame=new Mat(imageBox1.Height,imageBox1.Width, DepthType.Cv8U, 3);
            frame.SetTo(new Bgr(0, 0, 0).MCvScalar);
            CvInvoke.Line(frame, new Point(10, 10), new Point(100, 250), new MCvScalar(0, 255, 255), 4, LineType.AntiAlias);
            Application.Idle += Run;
        }

        private void Run(object sender,EventArgs e)
        {
            imageBox1.Image = frame;
        }

        private void imageBox1_MouseDown(object sender, MouseEventArgs e)
        {
            pt.X = e.X;
            pt.Y = e.Y;
        }

        private void imageBox1_MouseUp(object sender, MouseEventArgs e)
        {
            CvInvoke.Rectangle(frame, new Rectangle(pt.X, pt.Y, e.X-pt.X, e.Y-pt.Y), new MCvScalar(0, 255, 0), 1);
        }
    }

 使用Trackbar調整數值threshold處理

    public partial class Form1 : Form
    {
       
        Mat src = null;
        Mat dst = new Mat();
        string path=@"C:\Users\dell\Pictures\mach.jpg";
        public Form1()
        {
            InitializeComponent();
            src = CvInvoke.Imread(path);
            imageBox1.Image = src;

        }

        private void trackBar1_ValueChanged(object sender, EventArgs e)
        {
            int value = trackBar1.Value;
            CvInvoke.Threshold(src, dst, value, 255, ThresholdType.Binary);
            imageBox1.Image = dst;
        }


    }
相關文章
相關標籤/搜索