openCV3:在opencv中形态转换图像时没有得到预期的输出

时间:2017-11-14 23:43:24

标签: python opencv python-3.6 opencv3.3

我正在尝试对图像进行顶帽形态转换,但由于某种原因没有获得预期的输出。

# Top Hat: difference between input image and opening
kernel = np.ones((5,5),np.float32)/25 
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
plt.subplot(121),plt.imshow(img, cmap='gray'),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(tophat, cmap='gray'),plt.title('Top Hat')
plt.xticks([]), plt.yticks([])
plt.show()

期待什么

What is expected

我得到的是什么

What I am getting

编辑:添加内核。

2 个答案:

答案 0 :(得分:1)

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, ksize=(9,9))
tophat = cv2.morphologyEx(image, cv2.MORPH_TOPHAT, kernel)

result

修改

详情请阅读以下内容:

https://docs.opencv.org/3.3.1/d9/d61/tutorial_py_morphological_ops.html

https://docs.opencv.org/3.3.1/d4/d86/group__imgproc__filter.html#gac342a1bb6eabf6f55c803b09268e36dc

Iterations vs. Kernel Size in Morphological Operations (OpenCV)

答案 1 :(得分:0)

您需要规范化内核吗? 尝试从内核中删除除以25的除法。

形态学内核应该由""组成。和"零"。因此,不需要标准化。它也适用于CV_8UC1类型。