实例介绍
【实例简介】
用多种方法对图像进行边缘检测,可作为车牌识别、图形处理的参考。
【实例截图】
【核心代码】
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace 边缘检测
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void 输入图像ToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog opengl = new OpenFileDialog();
opengl.Filter = "Bmp File(*.bmp)|*.bmp";
if (opengl.ShowDialog() == DialogResult.OK)
{
Bitmap image = new Bitmap(opengl.FileName);
pictureBox1.Image = image;
}
}
private void robertsToolStripMenuItem_Click(object sender, EventArgs e)
{
Color c1 = new Color();
Color c2 = new Color();
Color c3 = new Color();
Color c4 = new Color();
int rr, gg, bb, r1, r2, r3, r4, fxr, fyr, i, j;
int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb;
Bitmap box1 = new Bitmap(pictureBox1.Image);
Bitmap box2 = new Bitmap(pictureBox1.Image);
for (i = 0; i < pictureBox1.Image.Width - 2; i )
{
for (j = 0; j < pictureBox1.Image.Height - 2; j )
{
c1 = box1.GetPixel(i, j);
c2 = box1.GetPixel(i 1, j 1);
c3 = box1.GetPixel(i 1, j);
c4 = box1.GetPixel(i, j 1);
r1 = c1.R;
r2 = c2.R;
r3 = c3.R;
r4 = c4.R;
fxr = r1 - r2;
fyr = r3 - r4;
rr = Math.Abs(fxr) Math.Abs(fyr) 128;
if (rr < 0) rr = 0;
if (rr > 255) rr = 255;
g1 = c1.G;
g2 = c2.G;
g3 = c3.G;
g4 = c4.G;
fxg = g1 - g2;
fyg = g3 - g4;
gg = Math.Abs(fxg) Math.Abs(fyg) 128;
if (gg < 0) gg = 0;
if (gg > 255) gg = 255;
b1 = c1.B;
b2 = c2.B;
b3 = c3.B;
b4 = c4.B;
fxb = b1 - b2;
fyb = b3 - b4;
bb = Math.Abs(fxb) Math.Abs(fyb) 128;
if (bb < 0) bb = 0;
if (bb > 255) bb = 255;
Color cc = Color.FromArgb(rr, gg, bb);
box2.SetPixel(i, j, cc);
}
pictureBox2.Refresh();
pictureBox2.Image = box2;
}
}
private void sobelToolStripMenuItem_Click(object sender, EventArgs e)
{
Color c1 = new Color();
Color c2 = new Color();
Color c3 = new Color();
Color c4 = new Color();
Color c5 = new Color();
Color c6 = new Color();
Color c7 = new Color();
Color c8 = new Color();
Color c9 = new Color();
int rr, r1, r2, r3, r4,r5,r6,r7,r8,r9, fxr, fyr, i, j;
// int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb;
Bitmap box1 = new Bitmap(pictureBox1.Image);
Bitmap box2 = new Bitmap(pictureBox1.Image);
for (i = 1; i < pictureBox1.Image.Width - 2; i )
{
for (j =1; j < pictureBox1.Image.Height - 2; j )
{
c1 = box1.GetPixel(i, j - 1);
c2 = box1.GetPixel(i - 1, j);
c3 = box1.GetPixel(i, j);
c4 = box1.GetPixel(i 1, j);
c5 = box1.GetPixel(i, j 1);
c6 = box1.GetPixel(i - 1, j - 1);
c7 = box1.GetPixel(i - 1, j 1);
c8 = box1.GetPixel(i 1, j - 1);
c9 = box1.GetPixel(i 1, j 1);
r1 = c1.R;
r2 = c2.R;
r3 = c3.R;
r4 = c4.R;
r5 = c5.R;
r6 = c6.R;
r7 = c7.R;
r8 = c8.R;
r9 = c9.R;
fxr = r6 2 * r2 r7 - r8 - 2 * r4 - r9;
fyr = r6 2 * r1 r8 - r7 - 2 * r5 - r9;
rr = Math.Abs(fxr) Math.Abs(fyr);
if (rr < 0) rr = 0;
if (rr > 255) rr = 255;
Color cc = Color.FromArgb(rr, rr, rr);
box2.SetPixel(i, j, cc);
}
pictureBox2.Refresh();
pictureBox2.Image = box2;
}
}
private void 拉普拉斯1ToolStripMenuItem_Click(object sender, EventArgs e)
{
Color c1 = new Color();
Color c2 = new Color();
Color c3 = new Color();
Color c4 = new Color();
Color c5 = new Color();
int rr, gg, bb, r1, r2, r3, r4, r5, fxr, i, j;
int g1, g2, g3, g4, g5, fxg, b1, b2, b3, b4, b5, fxb;
Bitmap box1 = new Bitmap(pictureBox1.Image);
Bitmap box2 = new Bitmap(pictureBox1.Image);
for (i = 1; i < pictureBox1.Image.Width - 2; i )
{
for (j = 1; j < pictureBox1.Image.Height - 2; j )
{
c1 = box1.GetPixel(i, j - 1);
c2 = box1.GetPixel(i - 1, j);
c3 = box1.GetPixel(i, j);
c4 = box1.GetPixel(i 1, j);
c5 = box1.GetPixel(i, j 1);
r1 = c1.R;
r2 = c2.R;
r3 = c3.R;
r4 = c4.R;
r5 = c5.R;
fxr = 4 * r3 - r1 - r2 - r4 - r5;
rr = Math.Abs(fxr) * 5 128;
if (rr < 0) rr = 0;
if (rr > 255) rr = 255;
g1 = c1.G;
g2 = c2.G;
g3 = c3.G;
g4 = c4.G;
g5 = c5.G;
fxg = 4 * g3 - g1 - g2 - g4 - g5;
gg = Math.Abs(fxg) * 5 128;
if (gg < 0) gg = 0;
if (gg > 255) gg = 255;
b1 = c1.B;
b2 = c2.B;
b3 = c3.B;
b4 = c4.B;
b5 = c5.B;
fxb = 4 * b3 - b1 - b2 - b4 - b5;
bb = Math.Abs(fxb) * 5 128;
if (bb < 0) bb = 0;
if (bb > 255) bb = 255;
Color cc = Color.FromArgb(rr, gg, bb);
box2.SetPixel(i, j, cc);
}
pictureBox2.Refresh();
pictureBox2.Image = box2;
}
}
private void 拉普拉斯2ToolStripMenuItem_Click(object sender, EventArgs e)
{
Color c1 = new Color();
Color c2 = new Color();
Color c3 = new Color();
Color c4 = new Color();
Color c5 = new Color();
Color c6 = new Color();
Color c7 = new Color();
Color c8 = new Color();
Color c9 = new Color();
int rr, r1, r2, r3, r4, r5,r6, r7, r8, r9, fxr, i, j;
// int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb;
Bitmap box1 = new Bitmap(pictureBox1.Image);
Bitmap box2 = new Bitmap(pictureBox1.Image);
for (i = 1; i < pictureBox1.Image.Width - 2; i )
{
for (j = 1; j < pictureBox1.Image.Height - 2; j )
{
c1 = box1.GetPixel(i, j - 1);
c2 = box1.GetPixel(i - 1, j);
c3 = box1.GetPixel(i, j);
c4 = box1.GetPixel(i 1, j);
c5 = box1.GetPixel(i, j 1);
c6 = box1.GetPixel(i - 1, j - 1);
c7 = box1.GetPixel(i - 1, j 1);
c8 = box1.GetPixel(i 1, j - 1);
c9 = box1.GetPixel(i 1, j 1);
r1 = c1.R;
r2 = c2.R;
r3 = c3.R;
r4 = c4.R;
r5 = c5.R;
r6 = c6.R;
r7 = c7.R;
r8 = c8.R;
r9 = c9.R;
fxr = 8 * r3 - r1 - r2 - r4 - r5 - r6 - r7 - r8 - r9;
// fyr = r6 2 * r1 r8 - r7 - 2 * r5 - r9;
rr = Math.Abs(fxr);
if (rr < 0) rr = 0;
if (rr > 255) rr = 255;
Color cc = Color.FromArgb(rr, rr, rr);
box2.SetPixel(i, j, cc);
}
pictureBox2.Refresh();
pictureBox2.Image = box2;
}
}
private void 右下ToolStripMenuItem_Click(object sender, EventArgs e)
{
Color c1 = new Color();
Color c2 = new Color();
Color c3 = new Color();
Color c4 = new Color();
Color c5 = new Color();
Color c6 = new Color();
Color c7 = new Color();
Color c8 = new Color();
Color c9 = new Color();
int rr, r1, r2, r3, r4, r5, r6, r7, r8, r9, fxr, i, j;
// int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb;
Bitmap box1 = new Bitmap(pictureBox1.Image);
Bitmap box2 = new Bitmap(pictureBox1.Image);
for (i = 1; i < pictureBox1.Image.Width - 2; i )
{
for (j = 1; j < pictureBox1.Image.Height - 2; j )
{
c1 = box1.GetPixel(i, j - 1);
c2 = box1.GetPixel(i - 1, j);
c3 = box1.GetPixel(i, j);
c4 = box1.GetPixel(i 1, j);
c5 = box1.GetPixel(i, j 1);
c6 = box1.GetPixel(i - 1, j - 1);
c7 = box1.GetPixel(i - 1, j 1);
c8 = box1.GetPixel(i 1, j - 1);
c9 = box1.GetPixel(i 1, j 1);
r1 = c1.R;
r2 = c2.R;
r3 = c3.R;
r4 = c4.R;
r5 = c5.R;
r6 = c6.R;
r7 = c7.R;
r8 = c8.R;
r9 = c9.R;
fxr = 2 * r2 - 2 * r5 2 * r1 2 * r4;
// fyr = r6 2 * r1 r8 - r7 - 2 * r5 - r9;
rr = Math.Abs(fxr);
if (rr < 0) rr = 0;
if (rr > 255) rr = 255;
Color cc = Color.FromArgb(rr, rr, rr);
box2.SetPixel(i, j, cc);
}
pictureBox2.Refresh();
pictureBox2.Image = box2;
}
}
private void prewittToolStripMenuItem_Click(object sender, EventArgs e)
{
Color c1 = new Color();
Color c2 = new Color();
Color c3 = new Color();
Color c4 = new Color();
Color c5 = new Color();
Color c6 = new Color();
Color c7 = new Color();
Color c8 = new Color();
Color c9 = new Color();
int rr, r1, r2, r3, r4, r5, r6, r7, r8, r9, fxr, i, j;
// int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb;
Bitmap box1 = new Bitmap(pictureBox1.Image);
Bitmap box2 = new Bitmap(pictureBox1.Image);
for (i = 1; i < pictureBox1.Image.Width - 2; i )
{
for (j = 1; j < pictureBox1.Image.Height - 2; j )
{
c1 = box1.GetPixel(i, j - 1);
c2 = box1.GetPixel(i - 1, j);
c3 = box1.GetPixel(i, j);
c4 = box1.GetPixel(i 1, j);
c5 = box1.GetPixel(i, j 1);
c6 = box1.GetPixel(i - 1, j - 1);
c7 = box1.GetPixel(i - 1, j 1);
c8 = box1.GetPixel(i 1, j - 1);
c9 = box1.GetPixel(i 1, j 1);
r1 = c1.R;
r2 = c2.R;
r3 = c3.R;
r4 = c4.R;
r5 = c5.R;
r6 = c6.R;
r7 = c7.R;
r8 = c8.R;
r9 = c9.R;
fxr = 2 * r3 r6 r2 - r4 - r5 r1 r7 r8 - r9;
// fyr = r6 2 * r1 r8 - r7 - 2 * r5 - r9;
rr = Math.Abs(fxr);
if (rr < 0) rr = 0;
if (rr > 255) rr = 255;
Color cc = Color.FromArgb(rr, rr, rr);
box2.SetPixel(i, j, cc);
}
pictureBox2.Refresh();
pictureBox2.Image = box2;
}
}
private void robinsonToolStripMenuItem_Click(object sender, EventArgs e)
{
Color c1 = new Color();
Color c2 = new Color();
Color c3 = new Color();
Color c4 = new Color();
Color c5 = new Color();
Color c6 = new Color();
Color c7 = new Color();
Color c8 = new Color();
Color c9 = new Color();
int rr, r1, r2, r3, r4, r5, r6, r7, r8, r9, fxr, i, j;
// int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb;
Bitmap box1 = new Bitmap(pictureBox1.Image);
Bitmap box2 = new Bitmap(pictureBox1.Image);
for (i = 1; i < pictureBox1.Image.Width - 2; i )
{
for (j = 1; j < pictureBox1.Image.Height - 2; j )
{
c1 = box1.GetPixel(i, j - 1);
c2 = box1.GetPixel(i - 1, j);
c3 = box1.GetPixel(i, j);
c4 = box1.GetPixel(i 1, j);
c5 = box1.GetPixel(i, j 1);
c6 = box1.GetPixel(i - 1, j - 1);
c7 = box1.GetPixel(i - 1, j 1);
c8 = box1.GetPixel(i 1, j - 1);
c9 = box1.GetPixel(i 1, j 1);
r1 = c1.R;
r2 = c2.R;
r3 = c3.R;
r4 = c4.R;
r5 = c5.R;
r6 = c6.R;
r7 = c7.R;
r8 = c8.R;
r9 = c9.R;
fxr = 2 * r2 - 2 * r4 r6 r7 - r8 - r9;
// fyr = r6 2 * r1 r8 - r7 - 2 * r5 - r9;
rr = Math.Abs(fxr);
if (rr < 0) rr = 0;
if (rr > 255) rr = 255;
Color cc = Color.FromArgb(rr, rr, rr);
box2.SetPixel(i, j, cc);
}
pictureBox2.Refresh();
pictureBox2.Image = box2;
}
}
private void kirschToolStripMenuItem_Click(object sender, EventArgs e)
{
Color c1 = new Color();
Color c2 = new Color();
Color c3 = new Color();
Color c4 = new Color();
Color c5 = new Color();
Color c6 = new Color();
Color c7 = new Color();
Color c8 = new Color();
Color c9 = new Color();
int rr, r1, r2, r3, r4, r5, r6, r7, r8, r9, fxr, i, j;
// int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb;
Bitmap box1 = new Bitmap(pictureBox1.Image);
Bitmap box2 = new Bitmap(pictureBox1.Image);
for (i = 1; i < pictureBox1.Image.Width - 2; i )
{
for (j = 1; j < pictureBox1.Image.Height - 2; j )
{
c1 = box1.GetPixel(i, j - 1);
c2 = box1.GetPixel(i - 1, j);
c3 = box1.GetPixel(i, j);
c4 = box1.GetPixel(i 1, j);
c5 = box1.GetPixel(i, j 1);
c6 = box1.GetPixel(i - 1, j - 1);
c7 = box1.GetPixel(i - 1, j 1);
c8 = box1.GetPixel(i 1, j - 1);
c9 = box1.GetPixel(i 1, j 1);
r1 = c1.R;
r2 = c2.R;
r3 = c3.R;
r4 = c4.R;
r5 = c5.R;
r6 = c6.R;
r7 = c7.R;
r8 = c8.R;
r9 = c9.R;
fxr = 3 * r6 5 * r1 - 3 * r8 5 * r2 - 3 * r4 5 * r7 - 3 * r5 - 3 * r9;
// fyr = r6 2 * r1 r8 - r7 - 2 * r5 - r9;
rr = Math.Abs(fxr);
if (rr < 0) rr = 0;
if (rr > 255) rr = 255;
Color cc = Color.FromArgb(rr, rr, rr);
box2.SetPixel(i, j, cc);
}
pictureBox2.Refresh();
pictureBox2.Image = box2;
}
}
private void smoothedToolStripMenuItem_Click(object sender, EventArgs e)
{
Color c1 = new Color();
Color c2 = new Color();
Color c3 = new Color();
Color c4 = new Color();
Color c5 = new Color();
Color c6 = new Color();
Color c7 = new Color();
Color c8 = new Color();
Color c9 = new Color();
int rr, r1, r2, r3, r4, r5, r6, r7, r8, r9, fxr, fyr, i, j;
// int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb;
Bitmap box1 = new Bitmap(pictureBox1.Image);
Bitmap box2 = new Bitmap(pictureBox1.Image);
for (i = 1; i < pictureBox1.Image.Width - 2; i )
{
for (j = 1; j < pictureBox1.Image.Height - 2; j )
{
c1 = box1.GetPixel(i, j - 1);
c2 = box1.GetPixel(i - 1, j);
c3 = box1.GetPixel(i, j);
c4 = box1.GetPixel(i 1, j);
c5 = box1.GetPixel(i, j 1);
c6 = box1.GetPixel(i - 1, j - 1);
c7 = box1.GetPixel(i - 1, j 1);
c8 = box1.GetPixel(i 1, j - 1);
c9 = box1.GetPixel(i 1, j 1);
r1 = c1.R;
r2 = c2.R;
r3 = c3.R;
r4 = c4.R;
r5 = c5.R;
r6 = c6.R;
r7 = c7.R;
r8 = c8.R;
r9 = c9.R;
fxr = -r2 r4 - r6 - r7 r8 r9;
fyr = r6 r1 r8 - r7 - r5 - r9;
rr = Math.Abs(fxr) Math.Abs(fyr);
if (rr < 0) rr = 0;
if (rr > 255) rr = 255;
Color cc = Color.FromArgb(rr, rr, rr);
box2.SetPixel(i, j, cc);
}
pictureBox2.Refresh();
pictureBox2.Image = box2;
}
}
}
}
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论