opencvsharp4中// 绘制最小包围矩形 rectangle(image, rect, Scalar.Red, 2, LineType.ArcLine, 0); 无法绘制矩形
时间: 2024-12-02 07:14:37 浏览: 17
在OpenCVSharp 4中,`Rectangle` 函数用于在图像上绘制矩形。如果要绘制最小包围矩形(通常是指轮廓的最小边界),这并不是直接通过`Rectangle`实现的,因为最小包围矩形是由轮廓算法(如`findContours`)计算得到的。下面是如何使用OpenCVSharp绘制最小包围矩形的一个示例:
```csharp
// 首先,找到图像中的轮廓
Mat srcImage = ... // 加载你的图像
vector<Point> contours;
vector<Vec4i> hierarchy;
Cv2.findContours(srcImage, out contours, out hierarchy, ContourRetrievalModes.List, ContourApproximationModes.ApproxSimple);
// 假设我们找到了一个轮廓
Rect boundingRect = Cv2.boundingRect(contours[0]); // 计算轮廓的最小包围矩形
// 使用轮廓和最小包围矩形绘制
Cv2.rectangle(srcImage, boundingRect, Scalar.Red, 2, LineType.ArcLine, 0); // 注意这里传递的是boundingRect而不是rect参数
Window window = new Window("Minimum Bounding Rectangle", WindowMode.Normal, srcImage);
Cv2.WaitKey(0);
```
在这个例子中,`boundingRect`变量存储了最小包围矩形的坐标信息,然后可以直接作为参数传递给`Rectangle`函数来绘制。
阅读全文