一、问题描述
在Spyder中,使用 matplotlib.pyplot 查看文件夹中一张图片
编写代码程序为:
import matplotlib.pyplot as plt
plt.figure("Sample") #打开一个图像窗口
img_path = "E:\\TotalTrain\\yirenzou100ns_0m_18041.png"
plt.imshow(img_path)
plt.axis('on') #显示坐标轴
plt.title('yirenzou100ns_0m_18041.png')
plt.show() #显示图片
但报错:TypeError: Image data of dtype <U40 cannot be converted to float,意思是无法把图像转换为float类型因此无法读取图像
二、解决方法
网上搜索解决的方法林林总总,下边列举一下,有成功有失败
兄弟们不妨都试一下§(* ̄▽ ̄*)§,因为虽然报错内容一致,但报错的原因可能不太一样啦~~~
2.1 刷新 (我不成功T_T)
Restart kernel,然后重新运行代码
2.2 检查路径
严格检查自己的路径是否正确,可以试着修改路径"E:\\TotalTrain\\yirenzou100ns_0m_18041.png"
(此路径为举例)为"E:/TotalTrain/yirenzou100ns_0m_18041.png"
如果依然报错,则不是路径问题(图中报错原因非路径问题)
2.3查看图片像素
如果使用matplotlib.image.imread读入图片时,图片像素过大,也会报告此错误
选择要查看的图片点击鼠标右键,选择属性,图中表示图片大小为227×227,因此不是图片像素过大的问题
2.4 将图片转化为数组
使用matplotlib.image读取图片,输出为一个数组;接着使用matplotlib相关函数便可显示图片
import matplotlib.pyplot as plt #plt显示图片
import matplotlib.image as mpimg #mpimg读取图片
img = mpimg.imread("E:\\TotalTrain\\yirenzou100ns_0m_18041.png")
#此时的img已是一个数组
img.shape #显示图片大小
plt.imshow(img) #显示图片
plt.axis('on') #显示坐标轴
plt.title('beijin100ns_1807.png')
plt.show()