Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.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中使用cv2或PIL的图像上的符号_Python_Python Imaging Library_Opencv Python - Fatal编程技术网

有没有一种方法可以画出;替换字符“;Python中使用cv2或PIL的图像上的符号

有没有一种方法可以画出;替换字符“;Python中使用cv2或PIL的图像上的符号,python,python-imaging-library,opencv-python,Python,Python Imaging Library,Opencv Python,我在画替换角色,�, ASCII值:65533,在图像中使用Open CV2或ImageDraw作为文本元素,但它始终添加非字符,￾, ASCII值:65533,改为在图像上显示。我甚至验证了我创造的角色是正确的,但没有成功 有没有办法添加� 使用特定字体大小将图像添加为文本?您可以这样做: #!/usr/local/bin/python3 from PIL import Image, ImageFont, ImageDraw import numpy as np import cv2 #

我在画替换角色,�, ASCII值:65533,在图像中使用Open CV2或ImageDraw作为文本元素,但它始终添加非字符,￾, ASCII值:65533,改为在图像上显示。我甚至验证了我创造的角色是正确的,但没有成功


有没有办法添加� 使用特定字体大小将图像添加为文本?

您可以这样做:

#!/usr/local/bin/python3

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

# 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("/Library/Fonts/Arial Unicode.ttf",32)
draw.text((40, 20),"What character  �",(255,255,255),font=font)

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


请注意,PIL和OpenCV使用不同的颜色通道顺序,即RGB和BGR,因此您确实需要注意这一点,除非像我在这里所做的那样以黑色、白色或绿色进行注释。还有更多的讨论和简单的解决方法。

您可以这样做:

#!/usr/local/bin/python3

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

# 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("/Library/Fonts/Arial Unicode.ttf",32)
draw.text((40, 20),"What character  �",(255,255,255),font=font)

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


请注意,PIL和OpenCV使用不同的颜色通道顺序,即RGB和BGR,因此您确实需要注意这一点,除非像我在这里所做的那样以黑色、白色或绿色进行注释。还有更多的讨论和简单的解决方法。

ASCII
只有0到127的值。值
65533
不是asci代码。否则,您可以绘制该值的字符符号。尝试打印打印(str(chr(65533)),您会发现,在
chr()
中,ython3使用Unicode,但OpenCV可能只使用ASCII码。但是如果在Python2中运行它,您会得到
ValueError:chr()arg不在范围(256)
我在Python3上运行,您可以在这里看到。该符号确实有一个ASCII值[link](顺便说一句:如果您尝试使用
ASCII
编码写入
chr(65533)
,即
open('output.txt','w',encoding='ASCII')。write(chr(65533))
则会出现错误
unicodecodeerror:'ASCII'编解码器无法对位置0处的字符'\ufffd'进行编码:序号不在范围内(128)
ASCII
只有0到127个值。Value
65533
不是asci代码。如果不是这样,您可以绘制该值的字符符号。尝试打印(str(chr(65533)),您将看到3在
chr()中使用Unicode
但是OpenCV可能只使用ASCII码。但是如果你在Python 2中运行它,你会得到
ValueError:chr()arg不在范围(256)
我在Python 3上运行,你可以在这里看到。这个符号确实有一个ASCII值[link](顺便说一句:如果你试图用
ASCII
编码编写
chr(65533)
,即
open('output.txt','w',encoding='ascii')。write(chr(65533))
然后出现错误
UnicodeEncodeError:'ascii'编解码器无法对0位置的字符'\ufffd'进行编码:序号不在范围内(128)