Изменение семейства шрифтов в OpenCV Python с использованием PIL

1

Вышеупомянутый ответ не решает мою проблему.

Я использую cv2.putText() чтобы поместить текст поверх видео.

Это работает так, как ожидалось, но я пытаюсь использовать другой шрифт (недоступный в OpenCV).

Я понимаю, что OpenCV ограничен шрифтами cv2.FONT_HERSHEY, поэтому я использую PIL с OpenCV для достижения этого.

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

import cv2
from PIL import ImageFont, ImageDraw, Image

camera = cv2.VideoCapture('some_video.wmv')
while cv2.waitKey(30) < 0:
    rv, frame = camera.read()
    if rv:
        font = ImageFont.truetype("calibrii.ttf", 80)
        cv2.putText(frame, 'Hello World!', (600, 600), font, 2.8, 255)
        cv2.imshow('Video', frame)

У меня есть "calibrii.ttf" в том же каталоге, и, как я уже упоминал, этот подход работал с изображениями.

Вот ошибка:

cv2.putText(frame, 'Hello World!', (600, 600), font, 2.8, 255)
TypeError: an integer is required (got type FreeTypeFont)
Теги:
opencv
pillow
opencv-python

2 ответа

1

Вы можете использовать модуль freetype OpenCV для этого, не нужно использовать PIL.

import cv2
import numpy as np

img = np.zeros((100, 300, 3), dtype=np.uint8)

ft = cv2.freetype.createFreeType2()
ft.loadFontData(fontFileName='Ubuntu-R.ttf',
                id=0)
ft.putText(img=img,
           text='Quick Fox',
           org=(15, 70),
           fontHeight=60,
           color=(255,  255, 255),
           thickness=-1,
           line_type=cv2.LINE_AA,
           bottomLeftOrigin=True)

cv2.imwrite('image.png', img)

Выход этого экрана здесь.

  • 0
    Большое спасибо за помощь мне с этим. При первой попытке я получаю AttributeError: module 'cv2' has no attribute 'freetype' . Я использую opencv 3.4.1 с python 3.5.2 . Какие-либо предложения? Еще раз спасибо.
  • 0
    Вероятно, нужен этот pip install opencv-contrib-python
Показать ещё 1 комментарий
0

@[Джо Т. Бокер]

Здесь есть пошаговое руководство по созданию freetype с OpenCV - https://github.com/BabaGodPikin/Build-OpenCv-for-Python-with-Extra-Modules-Windows-10.

Когда это будет сделано, вы можете использовать этот пример с помощью fireant, чтобы использовать практически любой тип шрифта в формате ttf - https://fireant.github.io/misc/2017/01/28/ttf-opencv.html.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню