1、图像处理系统设计图像处理系统设计一、设计目的随着社会的发展,数码相机以及相关产品的使用率大大增加,使得电子相片越来越普及。由于使用者的经验不是很足,导致很多相片都达不到很好的效果,这迫切需要一款图像处理软件,为此我开发设计了图像处理系统,服务大众。二、设计思路1.文件:打开,保存,另存为;2.图像:垂直翻转、水平翻转、翻转90度;3.滤镜:浮雕、黑白、反色、锐化、反色、棕褐色;三、流程图四、界面设计五、关键代码1.浮雕处理private void btnfudiao_Click(object sender, EventArgs e) /以浮雕效果显示图像 if (pictureBox1.Ima
2、ge = null) MessageBox.Show(没有可处理的图片,请导入!); return; int Width = this.pictureBox1.Image.Width; int Height = this.pictureBox1.Image.Height; Bitmap newBitmap = new Bitmap(Width, Height); Bitmap oldBitmap = (Bitmap)this.pictureBox1.Image; Color pixel1, pixel2; double q; int w; progressBar1.Value = 0; pro
3、gressBar1.Maximum = Width; for (int x = 0; x Width - 1; x+) for (int y = 0; y 255) r = 255; if (r 255) g = 255; if (g 255) b = 255; if (b 0) b = 0; newBitmap.SetPixel(x, y, Color.FromArgb(r, g, b); progressBar1.Value+; q = (progressBar1.Value / double.Parse(progressBar1.Maximum.ToString() * 100; w =
4、 Convert.ToInt16(q); label1.Refresh(); label1.Text = w.ToString() + %; this.pictureBox2.Image = newBitmap; 2.黑白处理 private void btnheibai_Click(object sender, EventArgs e) /以黑白效果显示图像 if (pictureBox1.Image = null) MessageBox.Show(没有可处理的图片,请导入!); return; int Height = this.pictureBox1.Image.Height; int
5、Width = this.pictureBox1.Image.Width; Bitmap newBitmap = new Bitmap(Width, Height); Bitmap oldBitmap = (Bitmap)this.pictureBox1.Image; Color pixel; double q; int w; progressBar1.Value = 0; progressBar1.Maximum = Width; for (int x = 0; x Width; x+) for (int y = 0; y g ? r : g; Result = Result b ? Res
6、ult : b; break; case 2:/加权平均值法 Result = (int)(0.7 * r) + (int)(0.2 * g) + (int)(0.1 * b); break; newBitmap.SetPixel(x, y, Color.FromArgb(Result, Result, Result); progressBar1.Value+; q = (progressBar1.Value / double.Parse(progressBar1.Maximum.ToString() * 100; w = Convert.ToInt16(q); label1.Refresh(
7、); label1.Text = w.ToString() + %; this.pictureBox2.Image = newBitmap; 3.柔化处理 private void btnrouhua_Click(object sender, EventArgs e) /以柔化效果显示图像 if (pictureBox1.Image = null) MessageBox.Show(没有可处理的图片,请导入!); return; int Height = this.pictureBox1.Image.Height; int Width = this.pictureBox1.Image.Width
8、; Bitmap bitmap = new Bitmap(Width, Height); Bitmap MyBitmap = (Bitmap)this.pictureBox1.Image; Color pixel; double q; int w; progressBar1.Value = 0; progressBar1.Maximum = Width ; int Gauss = 1, 2, 1, 2, 4, 2, 1, 2, 1 ; for (int x = 1; x Width - 1; x+) for (int y = 1; y Height - 1; y+) int r = 0, g
9、= 0, b = 0; int Index = 0; for (int col = -1; col = 1; col+) for (int row = -1; row 255 ? 255 : r; r = r 255 ? 255 : g; g = g 255 ? 255 : b; b = b 0 ? 0 : b; bitmap.SetPixel(x - 1, y - 1, Color.FromArgb(r, g, b); progressBar1.Value+; q = (progressBar1.Value / double.Parse(progressBar1.Maximum.ToStri
10、ng() * 100; w = Convert.ToInt16(q) + 1; label1.Refresh(); label1.Text = w.ToString() + %; this.pictureBox2.Image = bitmap; 4.锐化处理 private void btnruihua_Click(object sender, EventArgs e)/以锐化效果显示图像 if (pictureBox1.Image = null) MessageBox.Show(没有可处理的图片,请导入!); return; int Height = this.pictureBox1.Ima
11、ge.Height; int Width = this.pictureBox1.Image.Width; Bitmap newBitmap = new Bitmap(Width, Height); Bitmap oldBitmap = (Bitmap)this.pictureBox1.Image; Color pixel; double q; int w; progressBar1.Value = 0; progressBar1.Maximum = Width; int Laplacian = -1, -1, -1, -1, 9, -1, -1, -1, -1 ; for (int x = 1
12、; x Width - 1; x+) for (int y = 1; y Height - 1; y+) int r = 0, g = 0, b = 0; int Index = 0; for (int col = -1; col = 1; col+) for (int row = -1; row 255 ? 255 : r; r = r 255 ? 255 : g; g = g 255 ? 255 : b; b = b 0 ? 0 : b; newBitmap.SetPixel(x - 1, y - 1, Color.FromArgb(r, g, b); progressBar1.Value
13、+; q = (progressBar1.Value / double.Parse(progressBar1.Maximum.ToString() * 100; w = Convert.ToInt16(q) + 1; label1.Refresh(); label1.Text = w.ToString() + %; this.pictureBox2.Image = newBitmap; 5.棕褐色处理 private void btnzonghese_Click(object sender, EventArgs e)/以棕褐色效果显示图像 if (pictureBox1.Image = nul
14、l) MessageBox.Show(没有可处理的图片,请导入!); return; int Height = this.pictureBox1.Image.Height; int Width = this.pictureBox1.Image.Width; Bitmap bitmap = new Bitmap(Width, Height); Bitmap MyBitmap = (Bitmap)this.pictureBox1.Image; Color pixel1; int r, g, b; double q; int w; progressBar1.Value = 0; progressBa
15、r1.Maximum = Width; for (int i = 1; i Width - 1; i+) for (int j = 1; j 255) r = 255; if (r 255) g = 255; if (g 255) b = 255; if (b 0) b = 0; bitmap.SetPixel(i, j, Color.FromArgb(r, g, b); progressBar1.Value+; q = (progressBar1.Value / double.Parse(progressBar1.Maximum.ToString() * 100; w = Convert.T
16、oInt16(q) + 1; label1.Refresh(); label1.Text = w.ToString() + %; this.pictureBox2.Image = bitmap; 6.反色处理 private void btnfanse_Click(object sender, EventArgs e) /以反色效果显示图像 if (pictureBox1.Image = null) MessageBox.Show(没有可处理的图片,请导入!); return; Bitmap oldBitmap = (Bitmap)this.pictureBox1.Image; int Hei
17、ght = this.pictureBox1.Image.Height; int Width = this.pictureBox1.Image.Width; Bitmap bitmap = new Bitmap(Width, Height); Color pixel; double q; int w; progressBar1.Value = 0; progressBar1.Maximum = Width; for (int x = 1; x Width; x+) for (int y = 1; y Height; y+) int r, g, b; pixel = oldBitmap.GetP
18、ixel(x, y); r = 255 - pixel.R; g = 255 - pixel.G; b = 255 - pixel.B; bitmap.SetPixel(x, y, Color.FromArgb(r, g, b); progressBar1.Value+; q = (progressBar1.Value / double.Parse(progressBar1.Maximum.ToString() * 100; w = Convert.ToInt16(q); label1.Refresh(); label1.Text = w.ToString() + %; this.pictur
19、eBox2.Image = bitmap; 7.水平翻转private void btnshuipingfanzhuan_Click(object sender, EventArgs e) if (pictureBox1.Image = null) MessageBox.Show(没有可处理的图片,请导入!); return; Color c = new Color(); Bitmap box1 = new Bitmap(pictureBox1.Image ); int rr,gg,bb; int,pic = new int600,600,3; for (int i = 0;ipictureB
20、ox1.Image.Width-1;i+) for (int j=0;jpictureBox1.Height-1;j+) c = box1.GetPixel(i,j); pici,j,0 = c.R; pici,j,1 = c.G; pici,j,2 = c.B; for (int i = 1;ipictureBox1.Image.Width-1;i+) for (int j=1;jpictureBox1.Height-1;j+) rr=pici,j,0; gg=pici,j,1; bb=pici,j,2; Color c1 =Color.FromArgb(rr,gg,bb); box1.Se
21、tPixel(pictureBox1.Image.Width-i,j,c1); pictureBox2.Image = box1; 8.垂直翻转 private void btnchuizhifanzhuan_Click(object sender, EventArgs e) if (pictureBox1.Image = null) MessageBox.Show(没有可处理的图片,请导入!); return; Bitmap bt = new Bitmap(pictureBox1.Image); Bitmap bt1 = new Bitmap(pictureBox1.Image.Height
22、, pictureBox1.Image.Width); for (int i = 0; i bt.Width; i+) for (int j = 0; j bt.Height; j+) int R, G, B; R = bt.GetPixel(i, j).R; G = bt.GetPixel(i, j).G; B = bt.GetPixel(i, j).B; bt1.SetPixel(j, i, Color.FromArgb(R, G, B); pictureBox1.Refresh(); pictureBox2.Image = bt1; 9.旋转90度private void btnzhua
23、n90du_Click(object sender, EventArgs e) if (pictureBox1.Image = null) MessageBox.Show(错误,没有导入图片!); return; Bitmap bt = new Bitmap(pictureBox1.Image); Bitmap bt1 = new Bitmap(pictureBox1.Height, pictureBox1.Width); for (int i = 0; i bt.Width; i+) for (int j = 0; j bt.Height; j+) int R, G, B; R = bt.GetPixel(i, j).R; G = bt.GetPixel(i, j).G; B = bt.GetPixel(i, j).B; bt1.SetPixel(j, i, Color.FromArgb(R, G, B); pictureBox1.Refresh(); pictureBox2.Image = bt1; 六、总结 通过制作了图像处理系统,使我对图像处理技术的理解更进一步加深,制作过程中也使我对C#图像编程更加感兴趣,提高了学习C#的动力,同时,制作过程中出现的问题和在解决问题的过程中,使我提高了处理问题的能力。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1