库函数实现的函数:
// (1) 转为 bitmap: Bitmap map = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat); process_pictureBox.Image = map; // (2) Image img 转为Mat: Bitmap bitmap = new Bitmap(img);//Image img OpenCvSharp.Mat mat = OpenCvSharp.Extensions.BitmapConverter.ToMat(bitmap);//用bitmap转换为mat
该方法内存泄露比较严重,噌噌往上涨,下面的方法要好一些。
个人封装的函数:
// (1)转为 bitmap: public static Bitmap MatToBitmap(Mat dst) { return new Bitmap(dst.Cols, dst.Rows, (int)dst.Step(), PixelFormat.Format24bppRgb, dst.Data); } // (2)Image img 转为Mat public static Mat BitmapToMat(Bitmap srcbit) { int iwidth = srcbit.Width; int iheight = srcbit.Height; int iByte = iwidth * iheight * 3; byte[] result = new byte[iByte]; int step; Rectangle rect = new Rectangle(0, 0, iwidth, iheight); BitmapData bmpData = srcbit.LockBits(rect, ImageLockMode.ReadWrite, srcbit.PixelFormat); IntPtr iPtr = bmpData.Scan0; Marshal.Copy(iPtr, result , 0, iByte); step = bmpData.Stride; srcbit.UnlockBits(bmpData); return new Mat(srcbit.Height, srcbit.Width, new MatType(MatType.CV_8UC3), result ,step); }
![weinxin](http://blog.tsingmac.com/wp-content/uploads/img/qr_300x300.jpg)
我的微信
一个码农、工程狮、集能量和智慧于一身的、DIY高手、小伙伴er很多的、80后奶爸。
赞助我为您提供更好的技术支持。
支付宝打赏
微信钱包打赏
赏