在C#中使用warpAffine缩小图片的代码应该怎么写
时间: 2024-04-15 11:27:30 浏览: 7
在C#中使用`warpAffine`函数来缩小图片,你可以使用OpenCV库来实现。下面是一个示例代码:
```csharp
using System;
using OpenCvSharp;
class Program
{
static void Main(string[] args)
{
// 读取原始图片
Mat srcImage = Cv2.ImRead("path_to_image.jpg");
// 计算缩小比例
double scale = 0.5; // 缩小到原来的一半大小
// 计算输出图片尺寸
Size dstSize = new Size((int)(srcImage.Cols * scale), (int)(srcImage.Rows * scale));
// 创建输出图片
Mat dstImage = new Mat(dstSize, srcImage.Type());
// 计算仿射变换矩阵
Mat affineMatrix = new Mat(2, 3, MatType.CV_32FC1);
float[] matrixData =
{
(float)scale, 0, 0,
0, (float)scale, 0
};
affineMatrix.SetArray(0, 0, matrixData);
// 进行仿射变换
Cv2.WarpAffine(srcImage, dstImage, affineMatrix, dstSize);
// 显示结果
Cv2.ImShow("Original Image", srcImage);
Cv2.ImShow("Scaled Image", dstImage);
Cv2.WaitKey(0);
}
}
```
在上面的示例代码中,你需要将`"path_to_image.jpg"`替换为你自己的图片路径。这段代码会加载原始图片,然后根据指定的缩小比例计算输出图片的尺寸。接着创建输出图片并计算仿射变换矩阵,最后使用`warpAffine`函数对原始图片进行缩小操作。最后,通过`ImShow`函数显示原始图片和缩小后的图片。