如何解决使用 OpenCv 对图像进行二值化时,究竟在哪里使用形态学操作扩张、侵蚀、开运算或闭运算
我已经为图像二值化构建了一个代码,它运行良好,但我的二值图像中的文本要么变得太大,要么在其中存在一些白噪声。我想要做的是单独尝试 Erosion,Dilation,Opening,Closing
,然后看看哪个对我的结果有所改善。我应该在哪里在我的代码中使用这些形态学操作。例如在 Sharpened
和 binary
之间或 division
和 sharpened
之间?
import numpy as np
import cv2
import skimage.filters as filters
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
smooth = cv2.GaussianBlur(gray,(93,93),)
division = cv2.divide(gray,smooth,scale=255)
# kernel = np.ones((5,5),np.uint8) # use operations here
# opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)
sharp = filters.unsharp_mask(division,radius=1.5,amount=1.5,multichannel=False,preserve_range=False)
sharp = (255*sharp).clip(0,255).astype(np.uint8)
# kernel = np.ones((5,np.uint8) # or here
# opening = cv2.morphologyEx(sharp,kernel)
thresh = cv2.threshold(sharp,255,cv2.THRESH_OTSU )[1]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。