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)
鉴于下面的代码,cv2.dilate 和 cv2.erode 在 python return 中运行我发送给它的相同图像。我究竟做错了什么?我正在使用 OpenCV3.0.0。和 iPython 2.7
上的 numpy1.9.0im = 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)