OpenCvSharp工作学习笔记5-图片缩放

本文介绍了两种图片缩放方法:一是使用C#的System.Drawing库,二是利用OpenCvSharp的Resize方法。通过比较,展示了OpenCvSharp在缩放图片时的简便高效。同时提供了代码示例,展示如何将图片按指定尺寸显示在界面上。
摘要由CSDN通过智能技术生成

前言:经常会遇到需要处理图片大小显示在界面上的情况,这里整理一下两种缩放图片的方法。

1.自己写一个缩放的方法(using System.Drawing)

        public Bitmap shrinkTo(Image pic, System.Drawing.Size S, Boolean cutting)
        {
            Bitmap tmp = new Bitmap(S.Width, S.Height);
            Graphics g = Graphics.FromImage(tmp);
            g.Clear(Color.FromArgb(0, 0, 0, 0));
            Boolean mode = (float)pic.Width / S.Width > (float)pic.Height / S.Height; 
            if (cutting)
            {
                mode = !mode;
            }
            if (mode)
            {
                S.Height = (int)((float)pic.Height * S.Width / pic.Width);
            }
            else
            {
                S.Width = (int)((float)pic.Width * S.Height / pic.Height);
            }
            System.Drawing.Point P = new System.Drawing.Point((tmp.Width - S.Width) / 2, (tmp.Height - S.Height) / 2);
            g.DrawImage(pic, new Rectangle(P, S));
            return tmp;
        }

2.利用OpenCvSharp实现图片缩放(using OpenCvSharp)

 方法实现部分:

        public Mat ShrinkTo(Mat mat , OpenCvSharp.Size size)
        {
            if (mat.Empty())
            {
                return null;
            }
            Mat outMat = new Mat();
            Cv2.Resize(mat,outMat,size);
            return outMat;
        }

根据imagebox的Size把加载的图片显示出来

TIP:注意这里用到了OpenCvSharp.Extensions,需要在Nuget中添加拓展并引用。

当然这里可以简化这个语句,或者上面的方法直接输出Bitmap类型,但是由于最近在学习opencvsharp,所以更多去使用和熟悉Mat类

        public string SelectPic()
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Multiselect = false;
            dialog.Title = "请选择图片";
            dialog.Filter = "图片文件(*.jpg,*.png,*.bmp)|*.jpg;*.png;*.bmp";
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                pictureBoxSrc.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(ShrinkTo(new Mat(dialog.FileName,ImreadModes.AnyColor|ImreadModes.AnyDepth),new OpenCvSharp.Size(pictureBoxSrc.Width,pictureBoxSrc.Height)));
                return dialog.FileName;
            }
            return null;
        }

 总结:可以看到,利用opencvsharp的Resize方法可以更加省时省力地缩放图片,不用去当那个造船的人,当然要提升自己的算法能力就可以去自己写。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值