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)