【问题标题】:Using Erode and Dilate in Emgu (OpenCV for C#)在 Emgu 中使用 Erode 和 Dilate (OpenCV for C#)
【发布时间】:2017-10-22 16:09:57
【问题描述】:

与 OpenCv Dilate 函数的 python 绑定不同,C# 版本有更多的参数,这些参数都是必需的,我不确定元素参数的元素使用什么。 我尝试了以下方法,输出看起来与 inpur 相同:

public static void Dilate(
    IInputArray src,
    IOutputArray dst,
    IInputArray element,
    Point anchor,
    int iterations,
    BorderType borderType,
    MCvScalar borderValue
)

在 Python 中,我会执行以下操作:

kernel = np.ones((5,5),np.uint8)

dilation = cv2.dilate(src, kernel,iterations=3)

在 C# 中,我尝试使用 Default values.,但输出看起来与输入没有任何不同。

    ScalarArray elem = new ScalarArray(0);

    CvInvoke.Dilate(_cannyFrame
             , _dilatedCanny
             , elem
             , new Point(-1,- 1)
             , 6
             , BorderType.Constant 
             , new MCvScalar(255, 255, 255) );    

【问题讨论】:

    标签: c# python opencv emgucv


    【解决方案1】:

    错误似乎在结构元素中。您正在使用等于零的elem,这对目标图像_dilatedCanny 没有影响。在 python 中,您正在使用带有一个元素的内核...

    【讨论】:

      【解决方案2】:

      试试这个

      Mat element = CvInvoke.GetStructuringElement(Emgu.CV.CvEnum.ElementShape.Rectangle, new Size(3, 3), new Point(-1, -1));
      
      CvInvoke.Dilate(_cannyFrame
               , _dilatedCanny
               , element 
               , new Point(-1,- 1)
               , 6
               , BorderType.Constant 
               , new MCvScalar(255, 255, 255) );   
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-18
        • 1970-01-01
        • 2012-03-02
        • 2019-08-07
        • 1970-01-01
        相关资源
        最近更新 更多