opencvsharp将Mat里的图像平移
时间: 2024-03-08 18:48:44 浏览: 75
基于opencv实现图像平移
5星 · 资源好评率100%
在OpenCvSharp中,可以使用`Cv2.WarpAffine()`方法实现图像平移操作。具体步骤如下:
1. 导入OpenCvSharp命名空间。
```
using OpenCvSharp;
```
2. 读取图像并创建一个平移矩阵。
```
Mat src = Cv2.ImRead("image.jpg", ImreadModes.Color);
int rows = src.Rows;
int cols = src.Cols;
// 创建平移矩阵
Mat M = new Mat(2, 3, MatType.CV_32F);
M.Set<float>(0, 0, 1);
M.Set<float>(0, 1, 0);
M.Set<float>(0, 2, 100);
M.Set<float>(1, 0, 0);
M.Set<float>(1, 1, 1);
M.Set<float>(1, 2, 50);
```
3. 使用`Cv2.WarpAffine()`方法实现图像平移。
```
// 图像平移
Mat dst = new Mat();
Cv2.WarpAffine(src, dst, M, new Size(cols, rows));
```
其中,`Cv2.WarpAffine()`方法的参数解释如下:
- `src`:输入图像
- `dst`:输出图像
- `M`:平移矩阵
- `new Size(cols, rows)`:输出图像的大小
4. 显示结果并保存图像。
```
// 显示结果
Cv2.ImShow("src", src);
Cv2.ImShow("dst", dst);
Cv2.WaitKey(0);
// 保存结果
Cv2.ImWrite("result.jpg", dst);
```
完整代码如下:
```
using OpenCvSharp;
class Program
{
static void Main(string[] args)
{
// 读取图像并创建平移矩阵
Mat src = Cv2.ImRead("image.jpg", ImreadModes.Color);
int rows = src.Rows;
int cols = src.Cols;
Mat M = new Mat(2, 3, MatType.CV_32F);
M.Set<float>(0, 0, 1);
M.Set<float>(0, 1, 0);
M.Set<float>(0, 2, 100);
M.Set<float>(1, 0, 0);
M.Set<float>(1, 1, 1);
M.Set<float>(1, 2, 50);
// 图像平移
Mat dst = new Mat();
Cv2.WarpAffine(src, dst, M, new Size(cols, rows));
// 显示结果
Cv2.ImShow("src", src);
Cv2.ImShow("dst", dst);
Cv2.WaitKey(0);
// 保存结果
Cv2.ImWrite("result.jpg", dst);
}
}
```
阅读全文