图像分割
求助:谁有图像分割的算法,或者C#的源程序更好,帮帮忙!
程序代码:
Bitmap bb = (Bitmap)Image.FromFile("..."); Bitmap sepbitmap1= bb.Clone(new System.Drawing.Rectangle(0,0,20,20),System.Drawing.Imaging.PixelFormat.Format32bppPArgb); Image image = System.Drawing.Image.FromFile("a.jpg",true); Bitmap bmp = new Bitmap(400,400); Graphics grap = Graphics.FromImage(bmp); grap.Clear(Color.Transparent); grap.DrawImage(image,new Rectangle(0,0,400,400)); 如果a.jpg的大小是4000*4000,这样在新的图像中得到的就是左上角起的400*400的一部份. 若要10*10,则用循环就可实现 [System.Runtime.InteropServices.DllImportAttribute ( "gdi32.dll" ) ] private static extern bool BitBlt ( IntPtr hdcDest , // 目标 DC的句柄 int nXDest , int nYDest , int nWidth , int nHeight , IntPtr hdcSrc , // 源DC的句柄 int nXSrc , int nYSrc , System.Int32 dwRop // 光栅的处理数值 ) ; private void button1_Click(object sender, System.EventArgs e) { try { string file = null; Bitmap bmp = null; IntPtr dc1 = IntPtr.Zero; IntPtr dc2 = IntPtr.Zero; int row = 2, col = 2; int left = 0, top =0 , width = 0, height = 0; for(int i=0; i<row; i++) { left = 0; top = i * ((int)(this.pictureBox1.Height / row)); for(int j=0; j<col; j++) { file = @"c:\"+ i.ToString() + j.ToString() +".bmp"; if (j == col-1) width = this.pictureBox1.Width - ((int)(this.pictureBox1.Width / col)) * j; else width = (int)(this.pictureBox1.Width / col); if (i == row-1) height = this.pictureBox1.Height - ((int)(this.pictureBox1.Height / row)) * i; else height = (int)(this.pictureBox1.Height / row); Graphics g1 = this.pictureBox1.CreateGraphics(); bmp = new Bitmap(width, height, g1); Graphics g2 = Graphics.FromImage(bmp); dc1 = g1.GetHdc(); dc2 = g2.GetHdc(); BitBlt (dc2 , 0 , 0 , width , height , dc1 , left , top , 13369376 ) ; g1.ReleaseHdc(dc1) ; g2.ReleaseHdc(dc2) ; g1.Dispose(); g2.Dispose(); bmp.Save(file, System.Drawing.Imaging.ImageFormat.Bmp); left += width; } } } catch(Exception ex) { MessageBox.Show(ex.ToString()); } }