在OpenCV中寻找小轮廓
我正在使用EmguCV(OpenCV的C#包装器),我可以使用FindContours查找轮廓,如下所示:在OpenCV中寻找小轮廓,opencv,emgucv,contour,Opencv,Emgucv,Contour,我正在使用EmguCV(OpenCV的C#包装器),我可以使用FindContours查找轮廓,如下所示: Contour<Point> cnts; cnts = imgLineMask.FindContours(Emgu.CV.CvEnum.CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_NONE, Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_LIST); for (; cnts !=
Contour<Point> cnts;
cnts = imgLineMask.FindContours(Emgu.CV.CvEnum.CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_NONE, Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_LIST);
for (; cnts != null; cnts = cnts.HNext)
{
double ar = cnts.Area;
}
轮廓碳纳米管;
cnts=imgLineMask.FindContours(Emgu.CvEnum.CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_NONE,Emgu.CV.CvEnum.RETR_TYPE.CV RETR_LIST);
对于(;cnts!=null;cnts=cnts.HNext)
{
双ar=碳纳米管面积;
}
但是,如果轮廓只有一两个像素大,它们的面积和力矩都为零。有没有办法让它在这么小的轮廓上工作?或者它只是不能用很小的轮廓工作
谢谢不,我不认为有什么办法可以让它工作,使用Findcontours 原因是OpenCV方法是一种方法,而不是一种blob查找方法。面积是根据周长计算的,而不仅仅是像素的总和 周长是轮廓上相邻或像素之间距离的总和。因此,2x2像素点的周长为4,但面积将为1乘以1=1。单个像素的周长为0,因此面积也为0
如果你想找到单像素的斑点,你可以看一下算法或者图片。后者可能是最容易实现的。图像是黑白的吗?你以前运行过hough变换吗?是的,它是一个具有黑色背景和白色2-3个微小轮廓的二值图像。不,我没有应用hough变换。我应该那样做吗?FindContours对于较大的轮廓没有问题。在示例中,opencv在查找轮廓之前应用hough或threshold等