Написание смайликов на изображении с помощью opencv - PullRequest
1 голос
/ 04 апреля 2020

Я хотел бы знать, возможно ли написать эмодзи на изображении с OpenCV.

Это то, что я имею до сих пор.

import cv2
import emoji

img = cv2.imread('image.png')
tick=str(emoji.emojize(':heavy_check_mark:'))
cv2.putText(img, tick,(5,5), cv2.FONT_HERSHEY_TRIPLEX , 1, (255, 255, 255),3)
cv2.imshow('result',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Приведенный выше код не работать, и я не знаю почему. Можно ли загрузить тик эмодзи в виде изображения (скажем, img2), а затем «вставить» его по некоторой координате?

Я использую python 3.7.6 для windows.

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

Вы можете использовать PIL / Pillow и подходящий шрифт, например:

#!/usr/local/bin/python3

from PIL import Image, ImageFont, ImageDraw
import numpy as np
import cv2
import emoji

# Open image with OpenCV
im_o = cv2.imread('start.png')

# Make into PIL Image
im_p = Image.fromarray(im_o)

# Get a drawing context
draw = ImageDraw.Draw(im_p)
font = ImageFont.truetype("Arial Unicode.ttf",32)
tick=str(emoji.emojize(':heavy_check_mark:'))
draw.text((40, 80),tick,(255,255,255),font=font)

# Convert back to OpenCV image and save
result_o = np.array(im_p)
cv2.imwrite('result.png', result_o)

enter image description here

Обратите внимание, что красный и синий каналы взаимозаменяемы в OpenCV , поэтому либо измените порядок каналов, либо используйте черный, белый и зеленый. Обратный канал, как это:

BGRimage = RGBimage[...,::-1]
0 голосов
/ 04 апреля 2020

Пожалуйста, проверьте этот ответ Загрузка шрифта TrueType в OpenCV о загрузке шрифтов TTF в OpenCV:

enter image description here

...