【Emgu.CV教程】5.2、几何变换之缩放

发布时间:2024年01月15日

? ? ? ? Emgu.CV里面,图像缩放就要用到Resize()函数,官方定义如下:?

public static void Resize(
    IInputArray src, // 输入图像
    IOutputArray dst, // 输出图像
    Size dsize, // 输出图像的尺寸,当他为空的时候,fx和fy起作用
    double fx = 0.0, // 水平轴上的比例因子
    double fy = 0.0, // 垂直轴上的比例因子
    Inter interpolation = Inter.Linear // 插值方法,有5种,一般选Inter.Linear
)

? ? ? ? 看它的函数定义就知道,?Resize()函数有两种用法,一种是指定输出图像的Size大小,一种是按照原始图像长宽比例进行缩放,下面以挨个举例,原始素材还是?lena.jpg ,其宽度和高度都是512。

1、指定输出图像的Size大小

? ? ? ? 如果想让 lena.jpg? 的长宽变成960 * 640,可以这样写代码:

Mat dstMat = srcMat.Clone();
int width = 960;
int heiht = 640;
CvInvoke.Resize(dstMat, dstMat, new System.Drawing.Size(width, heiht));
CvInvoke.Imshow("Result Mat, " + dstMat.Size.ToString(), dstMat);

? ? ? ? 输出的目标图像如下,尺寸已经变成960 * 640:?

2、按比例缩放

? ? ? ? 如果想让 lena.jpg? 的宽度变成原来的0.75倍,高度变成原来的1.05倍,可以这样写代码:

Mat dstMat = srcMat.Clone();
double width = 0.75;
double heiht = 1.05;
CvInvoke.Resize(dstMat, dstMat, new System.Drawing.Size(), width, heiht);
CvInvoke.Imshow("Result Mat, " + dstMat.Size.ToString(), dstMat);

? ? ? ? 结果是这样的,整幅图像宽度、高度也做了相应的调整。?

原创不易,请勿抄袭。共同进步,相互学习。??

文章来源:https://blog.csdn.net/sswss12345/article/details/135544169
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。