与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) );
答案 0 :(得分:1)
错误似乎在结构元素中。您使用等于零的elem
,这对目标图片_dilatedCanny
没有影响。在python中,你使用的是带有一个元素的内核......
答案 1 :(得分:1)
尝试
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) );