在C#中使用OpenCV进行图像处理时,可以使用不同的算法和函数来实现斑点检测、边缘检测和轮廓检测。
- 斑点检测
- 边缘检测
- 轮廓检测
一、斑点检测(Blob)
斑点检测是指在图像中找到明亮或暗的小区域(通常表示为斑点),并标记它们的位置。可以使用OpenCV中的函数SimpleBlobDetector来实现斑点检测。该函数将图像转换为二进制图像,然后找到所有的轮廓,通过设置阈值来确定斑点的亮度范围。
SimpleBlobDetector.Params
//函数原型
public Params()
{
Data = new WParams
{
thresholdStep = 10f,
minThreshold = 50f,
maxThreshold = 220f,
minRepeatability = 2u,
minDistBetweenBlobs = 10f,
filterByColor = 1,
blobColor = 0,
filterByArea = 1,
minArea = 25f,
maxArea = 5000f,
filterByCircularity = 0,
minCircularity = 0.8f,
maxCircularity = float.MaxValue,
filterByInertia = 1,
minInertiaRatio = 0.1f,
maxInertiaRatio = float.MaxValue,
filterByConvexity = 1,
minConvexity = 0.95f,
maxConvexity = float.MaxValue
};
}
SimpleBlobDetector是OpenCV中用于检测二值图像中的斑点的类,以下是它的参数说明:
1. thresholdStep:二值化阈值步长,用于在二值化过程中逐步增加或减小阈值,默认为10。
2. minThreshold:最小的二值化阈值,默认为50。
3. maxThreshold:最大的二值化阈值,默认为220。
4. minRepeatability:最小的斑点重复次数,默认为2,表示只有当一个斑点至少在两个不同位置被检测到时才会被认为是有效的。
5. blobColor:斑点的亮度值,取值为0或255,默认为0,表示只检测黑色斑点。
6. filterByArea:是否根据斑点的面积进行过滤,默认为true,表示进行过滤。
7. minArea:最小的斑点面积,默认为25,表示只检测面积大于25的斑点。
8. maxArea:最大的斑点面积,默认为5000,表示只检测面积小于5000的斑点。
9. filterByCircularity:是否根据斑点的圆形度进行过滤,默认为false,表示不进行过滤。
10. minCircularity:最小的斑点圆形度,默认为0.8,表示只检测圆形度大于0.8的斑点。
11. maxCircularity:最大的斑点圆形度,默认为1,表示只检测圆形度小于1的斑点。
12. filterByInertia:是否根据斑点的惯性比进行过滤,默认为

最低0.47元/天 解锁文章
7444

被折叠的 条评论
为什么被折叠?



