• opencv-python 去除图片文字



    opencv-python 去除图片文字

    思路: 原图增强后提取增强后图片的轮廓进行闭运算,闭运算后的图像当掩码来修复原图即可去除文字
    图像增强代码链接

    import numpy as np
    import cv2


    def replaceZeroes(data):
        min_nonzero = min(data[np.nonzero(data)])
        data[data == 0] = min_nonzero
        return data


    def SSR(src_img, size):
        L_blur = cv2.GaussianBlur(src_img, (size, size), 0)
        img = replaceZeroes(src_img)
        L_blur = replaceZeroes(L_blur)

        dst_Img = cv2.log(img / 255.0)
        dst_Lblur = cv2.log(L_blur / 255.0)
        dst_IxL = cv2.multiply(dst_Img, dst_Lblur)
        log_R = cv2.subtract(dst_Img, dst_IxL)

        dst_R = cv2.normalize(log_R, None, 0, 255, cv2.NORM_MINMAX)
        log_uint8 = cv2.convertScaleAbs(dst_R)
        return log_uint8


    if __name__ == '__main__':
        img = 'cavity.png'

        size = 3
        src_img = cv2.imread(img)
        b_gray, g_gray, r_gray = cv2.split(src_img)
        b_gray = SSR(b_gray, size)
        g_gray = SSR(g_gray, size)
        r_gray = SSR(r_gray, size)
        result = cv2.merge([b_gray, g_gray, r_gray])

        cv2.imshow('img', src_img)
        cv2.imshow('aaa', result)
        cv2.imwrite('cavity1.png', result)
        cv2.waitKey(0)
        cv2.destroyAllWindows()

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        34
        35
        36
        37
        38
        39
        40
        41

    对增强后图像进行Canny:

    import cv2 as cv
    img = cv.imread('cavity1.png', cv.IMREAD_GRAYSCALE)
    canny_img = cv.Canny(img, 200, 150)
    cv.imwrite('cavity2.png', canny_img)

        1
        2
        3
        4

    对边缘图像进行闭运算得到掩码图:

    import cv2 as cv
    import numpy as np

    img = cv.imread('cavity2.png', 1)
    k = np.ones((3, 3), np.uint8)
    img2 = cv.morphologyEx(img, cv.MORPH_CLOSE, k)  # 闭运算
    cv.imwrite('cavity3.png', img2)

        1
        2
        3
        4
        5
        6
        7

    对图像进行修复:

    import cv2 as cv


    def repair(path):
        img = cv.imread(path)

        b = cv.imread('cavity3.png',0)
        dst = cv.inpaint(img, b, 5, cv.INPAINT_TELEA)
        cv.imshow('dst', dst)
        cv.imwrite(f'repair_{path}', dst)
        cv.waitKey()
        cv.destroyAllWindows()


    if __name__ == '__main__':
        repair('cavity.png')

  • 相关阅读:
    C# 文件流
    SQL语句(十八_补充)——存储过程
    SQL语句(十九)——存储过程(练习)
    SQL语句(十八)—— 存储过程
    软件测试(二)PICT的使用 组合测试方法(两两组合测试,可遍历组合测试)
    Swing布局管理器
    软件测试(一)-黑盒测试 随机测试技巧
    (一)在Lingo中使用集合
    数学建模 TSP(旅行商问题) Lingo求解
    哲学家进餐问题
  • 原文地址:https://www.cnblogs.com/lykbk/p/sdsdd232323232.html
Copyright © 2020-2023  润新知