Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OpenCV中寻找小轮廓_Opencv_Emgucv_Contour - Fatal编程技术网

在OpenCV中寻找小轮廓

在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 !=

我正在使用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 != 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等