Python-OpenCV 膨胀和腐蚀函数不修改任何东西

Python-OpenCV dilate and erode functions don't modify anything

鉴于下面的代码,cv2.dilate 和 cv2.erode 在 python return 中运行我发送给它的相同图像。我究竟做错了什么?我正在使用 OpenCV3.0.0。和 iPython 2.7

上的 numpy1.9.0
im = np.zeros((100,100), dtype=np.uint8)
im[50:,50:] = 255
dilated = cv2.dilate(im, (11,11))
print np.array_equal(im, dilated)

哪个 returns:

True

{已编辑} 另一个dilate post代表内核数据类型的问题。这个post其实反映了一个函数调用错误

我认为这与您修改数组的第二行有关。可能数据类型被感染。

函数需要内核,而不是内核大小。所以下面是正确的函数调用。

dilated = cv2.dilate(im, np.ones((11, 11)))

函数必须这样调用: cv2.dilate(img (input), kernel, iterations = number (你想应用滤镜多少次)

您需要指定一个合适的内核。可以是矩形,圆形等

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5,5))
im = np.zeros((100,100), dtype=np.uint8)
im[50:,50:] = 255
dilated = cv2.dilate(im, kernel, iterations = 1)