Emgucv图像处理

来源:互联网 发布:淘宝客seo 编辑:程序博客网 时间:2024/06/13 02:14

Emgucv图像处理


说明:imageBox1、imageBox2、imageBox3、imageBox4为imageBox控件

感兴趣区域ROI使用

  private void button1_Click(object sender, EventArgs e)        {            Mat scr = new Mat("002.jpg", Emgu.CV.CvEnum.ImreadModes.AnyColor);            imageBox1.Image = scr;            Mat scr1 = new Mat(scr.Size, DepthType.Cv8U, 3);            scr.CopyTo(scr1);//复制一个            //感兴趣区域ROI使用//图片组合            Mat logo = new Mat("001.jpg", Emgu.CV.CvEnum.ImreadModes.AnyColor);            Mat mat_image = new Mat(scr1, new Rectangle(new Point(80, 80), logo.Size));//提取图片的ROI保存到image中            logo.CopyTo(mat_image, null);//把Logo数据值给image,从而改变scr的ROI数据。            imageBox2.Image = scr1;        }

  图像线性叠加

 private void button6_Click(object sender, EventArgs e)        {            Mat scr = new Mat("002.jpg", Emgu.CV.CvEnum.ImreadModes.AnyColor);            imageBox1.Image = scr;             Mat logo = new Mat("001.jpg", Emgu.CV.CvEnum.ImreadModes.AnyColor);            Mat mat_image = new Mat(scr, new Rectangle(new Point(80, 80), logo.Size));           //图像线性叠加            Mat result = new Mat();            CvInvoke.AddWeighted(logo, 0.5, mat_image, 0.5, 10, result);//加权重            result.CopyTo(mat_image, null);//把Logo数据值给image,从而改变scr的ROI数据。            imageBox3.Image = result;        }

白平衡

 private void button2_Click(object sender, EventArgs e)        {            //白平衡            Mat scr = new Mat("002.jpg", Emgu.CV.CvEnum.ImreadModes.AnyColor);            Mat result = new Mat();            XPhotoInvoke.BalanceWhite(scr, result, WhiteBalanceMethod.Simple, 0, 255, 255, 0);            imageBox1.Image = scr;            imageBox2.Image = result;        }

实现通道分离

 private void button3_Click(object sender, EventArgs e)        {            //实现通道分离            Mat scr = new Mat("002.jpg", Emgu.CV.CvEnum.ImreadModes.AnyColor);            VectorOfMat vm = new VectorOfMat();            CvInvoke.Split(scr, vm);            var vms = vm.GetInputOutputArray();            Mat one_channel1 = vms.GetMat(0);            Mat one_channel2 = vms.GetMat(1);            Mat one_channel3 = vms.GetMat(2);            imageBox2.Image = one_channel1;            imageBox3.Image = one_channel2;            imageBox4.Image = one_channel3;        }


通道合并

private void button4_Click(object sender, EventArgs e)        {            //通道合并            Mat scr = new Mat("002.jpg", Emgu.CV.CvEnum.ImreadModes.AnyColor);            VectorOfMat vm = new VectorOfMat();            CvInvoke.Split(scr, vm);            var vms = vm.GetInputOutputArray();            Mat one_channel1 = vms.GetMat(0);            Mat one_channel2 = vms.GetMat(1);            Mat one_channel3 = vms.GetMat(2);            Mat dst = new Mat();            CvInvoke.Merge(vm, dst);            VectorOfMat mv = new VectorOfMat();            mv.Push(one_channel3);            mv.Push(one_channel2);            mv.Push(one_channel1);            CvInvoke.Merge(mv, dst);            imageBox2.Image = dst;        }

混合通道

 private void button5_Click(object sender, EventArgs e)        {            //混合通道            Mat scr = new Mat("002.jpg", Emgu.CV.CvEnum.ImreadModes.AnyColor);            Mat dst = new Mat(scr.Size, DepthType.Cv8U, 3);            int[] mix = new int[] { 0, 2, 1, 1, 2, 0 };            CvInvoke.MixChannels(scr, dst, mix);            imageBox5.Image = dst;        }







0 0
原创粉丝点击