OCR -- 生成与背景有差异字体颜色

训练OCR模型,生成字体是必不可少的一步,有时候字体颜色和背景颜色一样、或者很相近肉眼都看不出来,这样会使得训练出现问题。

下面是生成文字与背景有差异的样本代码:

看一下效果:


    def get_word_size(font, word):
        """
        Get word size removed offset
        :param font: truetype
        :param word:
        :return:
            size: word size, removed offset (width, height)
        """
        offset = font.getoffset(word)
        size = font.getsize(word)
        size = (size[0] - offset[0], size[1] - offset[1])
        return size

..........
        bg_height = bg.shape[0]
        bg_width = bg.shape[1]

        word_size = get_word_size(font, word)
        word_height = word_size[1]
        word_width = word_size[0]


        # Draw text in the center of bg
        text_x = int((bg_width - word_width) / 2)
        text_y = int((bg_height - word_height) / 2)
..........

    def get_word_color(bg, text_x, text_y, word_height, word_width):
        """
        Only use word roi area to get word color
        """
        offset = 10
        ymin = text_y - offset
        ymax = text_y + word_height + offset
        xmin = text_x - offset
        xmax = text_x + word_width + offset

        word_roi_bg = bg[ymin: ymax, xmin: xmax]
     
        # bg_mean = int(np.mean(word_roi_bg) * (2 / 3))
        # word_color = random.randint(0, bg_mean)
        mean_bg = np.mean(word_roi_bg)
        if mean_bg > 128:
             bg_mean = int (mean_bg * (2 / 3))
             word_color = random.randint(0, bg_mean)
        else:
            bg_mean = int (mean_bg * (5 / 3))
            word_color = random.randint(bg_mean, 255)

        return word_color

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MachineLP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值