Вы можете наложить текст на изображениях. Это довольно просто. Один из способов с OpenCV (CV2), модулем компьютерного зрения. Но это довольно большой модуль, возможно, лучше использовать PIL или что -то в этом роде для этой задачи.
Так скажем, вы идете с OpenCV. Сложная часть – установить модуль OpenCV. Некоторые гиды рекомендуют компилировать весь модуль.
Установите на Ubuntu
На Ubuntu есть неофициальный модуль, который вы можете установить из репозитория, проблема с этим заключается в том, что он не работает с Python 3.6.
В любом случае, после установки вы можете запустить код.
#!/usr/bin/python3 # coding=utf-8 import cv2 import numpy from PIL import Image, ImageDraw, ImageFont def cv2ImgAddText(img, text, left, top, textColor=(0, 255, 0), textSize=20): if (isinstance(img, numpy.ndarray)): img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) draw = ImageDraw.Draw(img) fontStyle = ImageFont.truetype( "FreeSans.ttf", textSize, encoding="utf-8") draw.text((left, top), text, textColor, font=fontStyle) return cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR) if __name__ == '__main__': src = cv2.imread('img1.jpg') cv2.imshow('src',src) cv2.waitKey(0) img = cv2ImgAddText(src, "Python programmers taking a walk", 10, 35, (255, 255 , 255), 20) cv2.imshow('show', img) if cv2.waitKey(0) & 0xFF == ord('q'): cv2.destroyAllWindows()
Изображение img1.jpg может быть любому входному изображению. Я выбрал это:
Цветовое наложение текста белое (255,255,255). Эти цифры составляют от 0 до 255 для цветных каналов.
img = cv2ImgAddText(src, "Python programmers taking a walk", 10, 35, (255, 255 , 255), 20)
Затем:
Ссылки по теме:
Оригинал: “https://dev.to/petercour/text-overlay-with-python-4ce5”