『QQ:1353814576』

OpenCVSharp如何实现图片裁剪和图片缩放Bitmap图像


OpenCVSharp 实现图片区域裁剪和以及按比例放大 bitmap图像 的例子

最近项目关于图像文字识别这一块出现了一个问题 就是在处理辅助图像识别模块处理出来的图像会某些时候会出现变异,比如生产的二值化图像杂色明显 偶尔还会出现花屏的情况,尤其是当图像size比较小的时候 触发率基本是百分之百,这种情况给识别造成了很大干扰,经过排查是在GDI+处理的图象的剪切和缩放时出现问题,努力一段时间 虽说有所改善但还是经常出现,最终决定替换为OpenCV的方式,目前效果还行

OpenCVSharp 实现图像按比例放大的例子

public static System.Drawing.Bitmap OpenCVToResize(this System.Drawing.Bitmap ImageOriginal, int ZoomNumber)
{
   if (ZoomNumber <= 0) {
     return ImageOriginal;
   }
   System.Drawing.Bitmap ImageBaseOriginal = new System.Drawing.Bitmap(ImageOriginal);
   Mat mat = OpenCvSharp.Extensions.BitmapConverter.ToMat(ImageBaseOriginal);
   OpenCvSharp. Size size = new OpenCvSharp.Size(ImageBaseOriginal.Width* ZoomNumber,      ImageBaseOriginal.Height * ZoomNumber); 
   Mat SizeMat = new Mat();
   Cv2.Resize(mat, SizeMat, size);
   ImageBaseOriginal = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(SizeMat);
   mat.Dispose();
}

OpenCVSharp 实现图像矩形区域裁剪的例子

public static System.Drawing.Bitmap OpenCVToCut(this System.Drawing.Bitmap ImageOriginal,
System.Drawing.Rectangle TargetRectangle) {
       System.Drawing.Bitmap ImageBaseOriginal = new System.Drawing.Bitmap(ImageOriginal);
       Mat mat = OpenCvSharp.Extensions.BitmapConverter.ToMat(ImageBaseOriginal);
       Rect rect = new Rect(TargetRectangle.X, TargetRectangle.Y, TargetRectangle.Width, TargetRectangle.Height);
       Mat RectMat = new Mat(mat,rect);
       ImageBaseOriginal = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(RectMat);
       mat.Dispose();
       RectMat.Dispose();
       return ImageBaseOriginal;
}