? ? ? ? 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。
? ? ? ? 如果想让 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);
? ? ? ? 结果是这样的,整幅图像宽度、高度也做了相应的调整。?
原创不易,请勿抄袭。共同进步,相互学习。??