zoukankan      html  css  js  c++  java
  • 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')

  • 相关阅读:
    docker node中uid与gid的授权问题
    windows下docker无法进行端口映射的问题
    IOS/Safari下document对象的scrollHeight值比Chrome更大
    Vue/Egg大型项目开发(二)数据库设计
    .babelrc和babel.config.js的相同配置不能合并
    es6 class中责任链模式与AOP结合
    JS设计模式(10)职责链模式(重要)
    Vue/Egg大型项目开发(一)搭建项目
    你不知道的JS(3)来聊聊this
    CentOS7为php7.2安装php-redis扩展(redis环境搭建二)
  • 原文地址:https://www.cnblogs.com/lykbk/p/sdsdd232323232.html
Copyright © 2011-2022 走看看