cv2 imwrite 和德语字母 ("ä, ü, ö")
cv2 imwrite and german letters ("ä, ü, ö")
我在python.
中用cv2
写了一个脚本来操作一些图片
现在我需要保存这些文件,但有些文件名包含德语字母 ("ä, ü, ö")
.
不幸的是,似乎 cv2
函数 imwrite()
无法处理此问题并将文件名写入 Bögen 而不是 Bögen.
我试图通过
将 pathname
转换为 UTF-8
和其他编码
path.encode("utf-8")
但这只会导致
"TypeError: bad argument type for built-in operation"
有人遇到过这样的问题吗?
很遗憾,OpenCV imwrite
方法只支持 ASCII 字符。
要显示UTF-8字符,我们需要使用PIL库。
参见下面的例子,实现一个新函数print_utf8
是这个任务的简单解决方案:
import numpy as np
import cv2
from PIL import Image, ImageDraw, ImageFont
def print_utf8(image, text, color):
fontName = 'FreeSerif.ttf'
font = ImageFont.truetype(fontName, 18)
img_pil = Image.fromarray(image)
draw = ImageDraw.Draw(img_pil)
draw.text((0, image.shape[0] - 30), text, font=font,
fill=(color[0], color[1], color[2], 0))
image = np.array(img_pil)
return image
img = cv2.imread("myImage.png")
color = (255, 0, 0) #red text
img_with_text = print_utf8(img, "ä, ü, ö",color)
cv2.imshow('IMAGE', img_with_text)
cv2.waitKey(0)
我在python.
中用cv2
写了一个脚本来操作一些图片
现在我需要保存这些文件,但有些文件名包含德语字母 ("ä, ü, ö")
.
不幸的是,似乎 cv2
函数 imwrite()
无法处理此问题并将文件名写入 Bögen 而不是 Bögen.
我试图通过
pathname
转换为 UTF-8
和其他编码
path.encode("utf-8")
但这只会导致
"TypeError: bad argument type for built-in operation"
有人遇到过这样的问题吗?
很遗憾,OpenCV imwrite
方法只支持 ASCII 字符。
要显示UTF-8字符,我们需要使用PIL库。
参见下面的例子,实现一个新函数print_utf8
是这个任务的简单解决方案:
import numpy as np
import cv2
from PIL import Image, ImageDraw, ImageFont
def print_utf8(image, text, color):
fontName = 'FreeSerif.ttf'
font = ImageFont.truetype(fontName, 18)
img_pil = Image.fromarray(image)
draw = ImageDraw.Draw(img_pil)
draw.text((0, image.shape[0] - 30), text, font=font,
fill=(color[0], color[1], color[2], 0))
image = np.array(img_pil)
return image
img = cv2.imread("myImage.png")
color = (255, 0, 0) #red text
img_with_text = print_utf8(img, "ä, ü, ö",color)
cv2.imshow('IMAGE', img_with_text)
cv2.waitKey(0)