根据下面的代码,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
{被修改} 另一个扩展帖子代表了内核数据类型的问题。这篇文章实际上反映了函数调用错误。
答案 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(输入),内核,迭代=数字(要应用过滤器的次数)