Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用opencv在图像上书写表情符号_Python_Opencv_Python 3.7_Opencv3.0_Emoji - Fatal编程技术网

Python 使用opencv在图像上书写表情符号

Python 使用opencv在图像上书写表情符号,python,opencv,python-3.7,opencv3.0,emoji,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.wait

我想知道是否有可能用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。

请检查有关在OpenCV中加载TTF字体的回答:


您可以使用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)
BGRimage = RGBimage[...,::-1]

请注意,在OpenCV中,红色和蓝色通道是互换的,因此可以反转通道顺序,或者使用黑色、白色和绿色。像这样的反向通道:

#!/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)
BGRimage = RGBimage[...,::-1]

您必须使用包含表情符号的字体,而不仅仅是ASCII@lenik我认为opencv只有少数几种字体。谢谢@Mark Setchell,你在哪里找到这个ImageFont.truetype(“Arial Unicode.ttf”,32)“Arial Unicode”字体的?默认情况下,它安装在所有Mac电脑上。否则你可以从网上下载。谢谢。这真的很有帮助。保持安全:)同样。祝你的项目好运,记住,StackOverflow上的问题(和答案)是免费的,所以如果你卡住了,请回来问另一个问题。