首页 > 解决方案 > 在使用 OpenCv 对图像进行二值化时,究竟在哪里使用形态学操作(膨胀、侵蚀、打开或关闭)

问题描述

我已经为图像二值化构建了一个代码,它工作得很好,但是我的二进制图像中的文本要么太大,要么里面有一些白噪声。我想做的是Erosion, Dilation, Opening, Closing单独尝试,然后看看哪一个对我来说改善了结果。我应该在我的代码中哪里使用这些形态学操作。例如在Sharpenedbinary图像之间或在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), 0,)
            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,5),np.uint8) # or here
            # opening = cv2.morphologyEx(sharp, cv2.MORPH_OPEN, kernel)

            thresh = cv2.threshold(sharp, 0, 255, cv2.THRESH_OTSU )[1]

标签: pythonopencvimage-processingcomputer-visionscikit-image

解决方案


推荐阅读