Визуализация текста в изображении с неравномерным уровнем насыщенности - PullRequest
0 голосов
/ 12 марта 2020

Как сделать текст с неравномерным уровнем насыщенности, как на втором изображении? (Шрифт двух изображений отличается, но уровень насыщения вызывает беспокойство.)

enter image description here

enter image description here

Мой начальный код

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

from random import seed
from random import randint
import numpy as np
import os.path

#Returns the text size in terms of width and height.
def getSize(txt, font):
    testImg = Image.new('RGB', (1, 1))
    testDraw = ImageDraw.Draw(testImg)
    return testDraw.textsize(txt, font)

text = 'lemper'
fontname = 'arial.ttf'
fontsize= 25

font = ImageFont.truetype(fontname, fontsize)
width, height = getSize(text, font)

#Creates an image with white background of constant size.
img = Image.new('RGB', (100, 100), 'white')
d = ImageDraw.Draw( img)
d.text(get_xy_coordinates(text, font), text, fill='black', font=font)             
img.save("text_images/1.png")

1 Ответ

1 голос
/ 12 марта 2020

Я надеюсь, что насыщенность не принесет никаких изменений, так как это двоичное изображение, я думаю, что вы ищете, чтобы добавить немного шума к изображению.

Пожалуйста, посмотрите библиотеку imgaug , добавьте или удалите соответствующие методы обработки изображений в зависимости от ваших потребностей

import numpy as np
import cv2
import imgaug.augmenters as iaa


a = cv2.imread('fontimage.jpg')[None,:,:,:]
# Standard scenario: You have N RGB-images and additionally 21 heatmaps per

images = a.copy()
heatmaps = np.random.random(size=(1, 64, 64, 1)).astype(np.float32)

seq = iaa.Sequential([
    # Comment or uncomment the filters on your preference
    #iaa.GaussianBlur((0,3.0)),
    iaa.MultiplyHueAndSaturation((0.5, 1.5), per_channel=True),
    iaa.MultiplySaturation((0.1, 0.4)),
    iaa.SaltAndPepper(0.2)
])

images_aug, heatmaps_aug = seq(images=images, heatmaps=heatmaps)

Out:

Converted Image

...