emgu cv 创建两幅图 复制一幅图并画圆
时间: 2024-12-08 09:23:07 浏览: 15
在EMGU CV中,你可以通过以下步骤创建两幅图像,并从第一幅复制部分图像,再在其上绘制圆形:
1. **初始化Mat对象**:首先,你需要创建两个`Mat`对象,它们代表图像。
```csharp
using Emgu.CV;
using Emgu.CV.Structure;
Mat sourceImage = new Mat("path_to_your_image.jpg", ImreadModes.Color); // 从文件加载源图像
Mat destinationImage = new Mat(sourceImage.Size, sourceImage.Type);
```
2. **复制源图像的一部分**:使用`Rect`结构指定你要复制的区域,并使用`CopyTo`方法复制这个区域到目标图像。
```csharp
Rect regionOfInterest = new Rect(x, y, width, height); // 定义要复制的矩形区域
destinationImage.CopyRegionOfInterest(sourceImage, regionOfInterest);
```
3. **绘制圆形**:接下来,你可以使用`Circle`函数在`destinationImage`上绘制圆形。该函数需要中心点坐标、半径和颜色等信息。
```csharp
Point center = new Point(x, y); // 圆心位置
int radius = 50; // 圆的直径,半径自行设置
Color color = Color.Red; // 颜色设置
destinationImage.Circle(center, radius, color, -1); // 第四个参数-1表示填充整个圆
```
4. **显示或保存结果**:最后,你可以选择显示这两幅图像,或者将修改后的图像保存到文件。
```csharp
// 显示图像
Graphics graphics = Graphics.FromImage(destinationImage);
graphics.DrawImage(sourceImage, new Rectangle(0, 0, sourceImage.Width, sourceImage.Height));
imageBox.Image = destinationImage.ToBitmap();
// 或者保存到文件
destinationImage.Save("destination_image_with_circle.jpg");
```
阅读全文