- 灰階 : Grayscale()
- 黑白(二階):Grayscale() → OtsuThreshold()
- 邊緣化 : Grayscale() → OtsuThreshold() → CannyEdgeDetector()
- B-Channel → ExtractChannel(RGB.B)
Step1. 檔案 → 新增專案 → Windows Form 應用程式 → 拉物件 Form1.cs[設計] → 撰寫 Form1.cs
Step2. 方案總管 → 參考 → 右鍵加入參考 → 瀏灠(預設路徑) C:\Program Files (x86)\AForge.NET\Framework\Release → 加入參考
AForge.Imaging.dll
AForge.Imaging.Formats.dll
Step3. Windows Form 拉入需要工具:
- pictureBox × 2
- button × 6
- openFileDialog × 1
- saveFileDialog × 1
Step4. coding
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AForge.Imaging.Formats;
using AForge.Imaging.Filters;
using AForge.Imaging;
namespace Lesson_p90
{
public partial class Form1 : Form
{
Bitmap img1, img2;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "所有檔案(*.*)|*.*";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
img1 = ImageDecoder.DecodeFromFile(openFileDialog1.FileName);
pictureBox1.Image = img1;
}
}
private void button2_Click(object sender, EventArgs e)
{
Grayscale filter = new Grayscale(0.2125, 0.7154, 0.0721);
img2 = filter.Apply(img1);
pictureBox2.Image = img2;
}
private void button3_Click(object sender, EventArgs e)
{
Grayscale grayfilter = new Grayscale(0.2125, 0.7154, 0.0721);
Bitmap grayImg = grayfilter.Apply(img1);
OtsuThreshold filter = new OtsuThreshold();
img2 = filter.Apply(grayImg);
pictureBox2.Image = img2;
}
private void button4_Click(object sender, EventArgs e)
{
Grayscale grayfilter = new Grayscale(0.2125, 0.7154, 0.0721);
Bitmap edgeImg = grayfilter.Apply(img1);
OtsuThreshold filter = new OtsuThreshold();
filter.ApplyInPlace(edgeImg);
CannyEdgeDetector filter2 = new CannyEdgeDetector();
img2 = filter2.Apply(edgeImg);
pictureBox2.Image = img2;
}
private void button5_Click(object sender, EventArgs e)
{
ExtractChannel filter = new ExtractChannel(RGB.B);
img2 = filter.Apply(img1);
pictureBox2.Image = img2;
}
private void button6_Click(object sender, EventArgs e)
{
saveFileDialog1.FileName = @"imgone.bmp";
saveFileDialog1.Filter = "Bitmap file(*.bmp)|*.bmp";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
img2.Save(saveFileDialog1.FileName);
}
}
}
}
沒有留言:
張貼留言