Python-OpenCV扩展和侵蚀功能不会修改任何东西

时间:2015-03-18 20:37:28

标签: python opencv

根据下面的代码,python中的cv2.dilate和cv2.erode函数返回我发送给它的相同图像。我究竟做错了什么?我正在使用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)

返回:

True

{被修改} 另一个扩展帖子代表了内核数据类型的问题。这篇文章实际上反映了函数调用错误。

4 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:1)

您需要指定适当的内核。它可以是矩形,圆形等。

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)

答案 2 :(得分:0)

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

答案 3 :(得分:0)

必须以这种方式调用函数: cv2.dilate(img(输入),内核,迭代=数字(要应用过滤器的次数)