opencvsharp扣出轮廓里的图像内容
时间: 2023-11-17 07:11:18 浏览: 178
使用OpenCVSharp可以轻松地扣出轮廓里的图像内容,以下是一个示例代码:
```csharp
using OpenCvSharp;
// 读取原始图像
Mat srcImg = Cv2.ImRead("input.jpg", ImreadModes.Color);
// 将原始图像转换为灰度图像
Mat grayImg = new Mat();
Cv2.CvtColor(srcImg, grayImg, ColorConversionCodes.BGR2GRAY);
// 对灰度图像进行二值化处理
Mat binaryImg = new Mat();
Cv2.Threshold(grayImg, binaryImg, 0, 255, ThresholdTypes.Binary | ThresholdTypes.Otsu);
// 查找图像中的轮廓
Point[][] contours;
HierarchyIndex[] hierarchy;
Cv2.FindContours(binaryImg, out contours, out hierarchy, RetrievalModes.External, ContourApproximationModes.ApproxSimple);
// 遍历所有轮廓并绘制边框
for (int i = 0; i < contours.Length; i++)
{
Rect rect = Cv2.BoundingRect(contours[i]);
Cv2.Rectangle(srcImg, rect, Scalar.Red, 2);
// 从原始图像中扣出轮廓内部的图像内容
Mat contourImg = srcImg.SubMat(rect);
// 处理扣出来的图像内容
// ...
}
```
该代码将原始图像转换为灰度图像,并对灰度图像进行二值化处理。然后,使用`FindContours()`函数查找图像中的轮廓,并遍历所有轮廓,通过`BoundingRect()`函数获取轮廓的矩形边框,使用`SubMat()`函数从原始图像中扣出轮廓内部的图像内容。最后,可以对扣出来的图像内容进行处理。
阅读全文