Scipy:加载图像文件时出现UnicodeDecodeError

时间:2016-08-12 04:38:24

标签: python numpy scipy

def image_to_laplacian(filename):
    with open(filename, 'r', encoding="latin-1") as f:
        s = f.read()
        img = sc.misc.imread(f)
image_to_laplacian('images/bw_3x3.png')

产地:

  

UnicodeDecodeError:' utf-8'编解码器不能解码位置0中的字节0x89:无效的起始字节

"影像/ bw_3x3.png"是我在Pinta制作的3x3图像。我尝试打开一个cat.jpg,我是从Google Images获得的,但我也遇到了同样的错误。

我还尝试使用"encoding="latin-1"作为参数打开,基于我在SO上阅读的内容;我能够打开文件,但是我 读取失败,异常

  

OSError:无法识别图像文件< _io.TextIOWrapper name =' images / bw_3x3.png'模式=' R'编码=' Latin-1的'>

1 个答案:

答案 0 :(得分:1)

导致错误的行是

s = f.read()

在'r'模式下,这会尝试将数据作为字符串读取,但它是一个图像文件,因此会失败。你可以改用'rb'。绝对删除encoding=latin,因为这仅与文本文件相关。

另请注意,根据the documentation

  

name:str或file对象       

要读取的文件名或文件对象。

因此,您可以省去打开文件,只需将文件路径作为字符串。以下应该有效:

img = sc.misc.imread(filename)