簡體   English   中英

在Emgu中使用Erode和Dilate(適用於C#的OpenCV)

[英]Using Erode and Dilate in Emgu (OpenCV for C#)

與OpenCv Dilate函數的python綁定不同,C#版本具有更多都是強制性的參數,並且我不確定用於element參數元素的內容。 我嘗試了以下操作,並且輸出看起來與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#中,我嘗試使用默認值。 但輸出看起來與輸入沒有什么不同。

    ScalarArray elem = new ScalarArray(0);

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

錯誤似乎在結構元素中。 您使用的elem等於零,這對目標圖像_dilatedCanny 在python中,您正在使用具有一個元素的內核...

嘗試這個

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) );   

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM