我想知道是否可以使用 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)
请注意,红色和蓝色 channel 在 OpenCV 中是互换的,因此要么颠倒 channel 顺序,要么使用黑色、白色和绿色。反向 channel 是这样的:
BGRimage = RGBimage[...,::-1]
关于python - 使用opencv在图像上编写表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61024482/