python - 使用opencv在图像上编写表情符号

标签 python opencv python-3.7 opencv3.0 emoji

我想知道是否可以使用 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),然后将其“粘贴”到某个坐标上?

我在 Windows 上使用 python 3.7.6。

最佳答案

您可以使用 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

请注意,红色和蓝色 channel 在 OpenCV 中是互换的,因此要么颠倒 channel 顺序,要么使用黑色、白色和绿色。反向 channel 是这样的:
BGRimage = RGBimage[...,::-1]

关于python - 使用opencv在图像上编写表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61024482/

相关文章:

python - SVG 转黑白

python - PDF、Django、二维码、reportlab

c++ - OpenCV 为什么将 Mat 设置为小于 1 的小数不会导致 Mat 中的所有值都变为 0?

python - 识别文档中的图像并自动将其删除的算法

python - IndexError : list index out of range in"if. ..否则...”

mysql - 无法构建 mysqlclient,Wheel 无法构建。 pip install mysqlclient 不起作用

python - 如何在汇编器中使用 IF 伪操作处理前向引用

python - 学习编写可重用的库

opencv - 在ubuntu上安装opencv时cmake找不到CUDA

python - 如何模拟 googleapiclient.discovery.build