Вот один из способов сделать это в Python OpenCV.
- Считать ввод
- Создать изображение нужного цвета фона того же размера, что и ввод
- Нарисуйте свой текст на фоновом изображении
- Получите ограничивающий прямоугольник для области текста
- Скопируйте область текста из фонового цветного изображения в копию входного изображения
- Сохранить результаты
Ввод:
import cv2
import numpy as np
# load image
img = cv2.imread("zelda1.jpg")
# create same size image of background color
bg_color = (0,0,0)
bg = np.full((img.shape), bg_color, dtype=np.uint8)
# draw text on bg
text_color = (0,0,255)
cv2.putText(bg, "Data: N/A", (5,30), cv2.FONT_HERSHEY_COMPLEX_SMALL, 0.75, text_color, 1)
# get bounding box
# use channel corresponding to color so that text is white on black background
x,y,w,h = cv2.boundingRect(bg[:,:,2])
print(x,y,w,h)
# copy bounding box region from bg to img
result = img.copy()
result[y:y+h, x:x+w] = bg[y:y+h, x:x+w]
# write result to disk
cv2.imwrite("zelda1_background_text.jpg", bg)
cv2.imwrite("zelda1_text.jpg", result)
# display results
cv2.imshow("TEXT", bg)
cv2.imshow("RESULT", result)
cv2.waitKey(0)
cv2.destroyAllWindows()
Текст на цвет фона изображение:
Текст на входном изображении:
PS Вы можете отрегулировать значения ограничивающего прямоугольника (x, y, w, h), чтобы добавить отступы, если хотите при кадрировании.