string ImagePath;
private void Button1_Click(object sender, EventArgs e)
{
OpenFileDialog openfile = new OpenFileDialog();
if (openfile.ShowDialog() == DialogResult.OK)
{
ImagePath = openfile.FileName;
pictureBox1.ImageLocation=ImagePath;
}
}
private void Button2_Click(object sender, EventArgs e)
{
Image<Gray, byte> src = new Image<Gray, byte>(ImagePath); ;
Image<Gray, byte> dst1 = new Image<Gray, byte>(src.Width, src.Height);
Image<Gray, byte> dst2 = new Image<Gray, byte>(src.Width, src.Height);
Image<Gray, byte> dst3 = new Image<Gray, byte>(src.Width, src.Height);
GaborFilter gf = new GaborFilter();
//0度
Bitmap bm1 = gf.ProcessFilter(UnmanagedImage.FromManagedImage(src.Bitmap), dst1.Bitmap, 3, 5, 0, 0.3, 2, 0.5).ToManagedImage();//gabor滤波
CvInvoke.Threshold(new Image<Gray, byte>(bm1), dst1, 150, 255, ThresholdType.Binary);
//45度
Bitmap bm2 = gf.ProcessFilter(UnmanagedImage.FromManagedImage(src.Bitmap), dst2.Bitmap, 3, 5, Math.PI / 4, 0.3, 2, 0.5).ToManagedImage();//gabor滤波
CvInvoke.Threshold(new Image<Gray, byte>(bm2), dst2, 150, 255, ThresholdType.Binary);
//135度
Bitmap bm3 = gf.ProcessFilter(UnmanagedImage.FromManagedImage(src.Bitmap), dst3.Bitmap, 3, 5, 135 * Math.PI / 180, 0.3, 2, 0.5).ToManagedImage();//gabor滤波
CvInvoke.Threshold(new Image<Gray, byte>(bm3), dst3, 150, 255, ThresholdType.Binary);
src.Dispose();
bm1.Dispose();
bm2.Dispose();
bm3.Dispose();
pictureBox2.Image = (dst1 * 255).Bitmap;
pictureBox3.Image = (dst2 * 255).Bitmap;
pictureBox4.Image = (dst3 * 255).Bitmap;
}
using Accord.Math;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VisioForge.Shared.AForge.Imaging;
using VisioForge.
C# 实现gabor滤波
最新推荐文章于 2023-09-21 15:03:01 发布