Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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中浏览和显示图像文件_Python_Image_Matplotlib - Fatal编程技术网

在Python中浏览和显示图像文件

在Python中浏览和显示图像文件,python,image,matplotlib,Python,Image,Matplotlib,我试图编写一个简单的Python函数,打开一个图像文件并在窗口中显示它。 我需要能够浏览我的文件,但我找不到修复我得到的一些错误 代码如下: import matplotlib.pyplot as plt import matplotlib.image as mpimg import matplotlib.cm as cm import numpy as np import pywt as pw import tkFileDialog as tk from PIL import Image d

我试图编写一个简单的Python函数,打开一个图像文件并在窗口中显示它。 我需要能够浏览我的文件,但我找不到修复我得到的一些错误

代码如下:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import matplotlib.cm as cm
import numpy as np
import pywt as pw
import tkFileDialog as tk
from PIL import Image

def fct(fisier):
    img = mpimg.imread(fisier)
    arr=np.array(img, dtype=np.float)
    plt.imshow(arr, cmap=cm.Greys_r)
    plt.show()
    print(arr)
    return arr, img
file = tk.askopenfile(initialdir='C:/temp')
fct(file)
错误是:

Traceback (most recent call last):
  File "E:/Disertatie/Python/Resources/ASCII/ASCII.py/CHM", line 17, in <module>
    fct(file)
  File "E:/Disertatie/Python/Resources/ASCII/ASCII.py/CHM", line 10, in fct
    img = mpimg.imread(fisier)
  File "C:\Python27\ArcGISx6410.3\lib\site-packages\matplotlib\image.py", line 1242, in imread
    im = pilread(fname)
  File "C:\Python27\ArcGISx6410.3\lib\site-packages\matplotlib\image.py", line 1225, in pilread
    image = Image.open(fname)
  File "C:\Python27\ArcGISx6410.3\lib\site-packages\PIL\Image.py", line 2290, in open
    % (filename if filename else fp))
IOError: cannot identify image file <open file u'E:/Disertatie/Date/Results/chm.tif', mode 'r' at 0x0000000007726300>
回溯(最近一次呼叫最后一次):
文件“E:/Disertatie/Python/Resources/ASCII/ASCII.py/CHM”,第17行,在
fct(文件)
文件“E:/Disertatie/Python/Resources/ASCII/ASCII.py/CHM”,第10行,fct格式
img=mpimg.imread(fisier)
文件“C:\Python27\ArcGISx6410.3\lib\site packages\matplotlib\image.py”,第1242行,在imread中
im=pilread(fname)
文件“C:\Python27\ArcGISx6410.3\lib\site packages\matplotlib\image.py”,第1225行,以pilread格式
image=image.open(fname)
文件“C:\Python27\ArcGISx6410.3\lib\site packages\PIL\Image.py”,第2290行,处于打开状态
%(如果文件名为fp,则为文件名)
IOError:无法识别图像文件

文件需要以二进制模式(“rb”)打开


tk文件对话框应该能够采用在此模式下打开文件的参数,而不是默认的(r)

对话框打开文件并返回文件对象。您可以改为使用
tk.askopenfilename
(它只返回一个文件名)并将其传递给
imread
函数。

我需要使用此图像进行后续处理。有没有更好的方法使用“tk.askopenfilename”来代替呢?没有。在您的情况下,这并不重要
tk.askopenfile
返回打开的文件,
tk.askopenfilename
仅返回文件名。但是由于
imread
可以同时处理这两种模式,因此您不必担心后一种模式将使用什么模式。您应该添加一些解释,说明此代码为什么以及如何解决此问题。
from scipy import misc
f = misc.face()
misc.imsave('e:/beauty.png', f) # uses the Image module (PIL)
import matplotlib.pyplot as plt
plt.imshow(f)
plt.show()