2017-04-03 71 views
4

我有下面的代码,它失败了,因为它无法从磁盘读取文件。图像始终是None如何从Unicode字符的路径中读取图像?

# -*- coding: utf-8 -*- 
import cv2 
import numpy 

bgrImage = cv2.imread(u'D:\\ö\\handschuh.jpg') 

注意:我的文件已被保存为带有BOM的UTF-8。我用Notepad ++进行了验证。

在进程监视器,我看到Python是从错误的道路acccessing文件:

Process Monitor

我看了一下:

回答

5

它可以通过

  • 打开使用open()文件,它支持Unicode作为在链接的答案来完成,
  • 读取的内容作为一个字节数组,
  • 转换字节数组到NumPy的阵列,
  • 解码图像
# -*- coding: utf-8 -*- 
import cv2 
import numpy 

stream = open(u'D:\\ö\\handschuh.jpg', "rb") 
bytes = bytearray(stream.read()) 
numpyarray = numpy.asarray(bytes, dtype=numpy.uint8) 
bgrImage = cv2.imdecode(numpyarray, cv2.IMREAD_UNCHANGED) 
0
bgrImage = cv2.imread(filename.encode('utf-8')) 

编码文件全路径为UTF-8