在matplotlib中读取tiff图像

时间:2019-06-04 14:18:52

标签: python image matplotlib image-processing

我正在尝试使用matplotlib读取TIFF(有时是PNG)图像,并建立一个类来读取和绘制与对象相关的多个图像。现在,类定义中的代码并不重要。

但是我有一个问题。当我在类定义之前的代码中包含最后一个段落时,我可以读取并显示图像,但是当我在类定义之后包含它时,它将不起作用。 有人可以帮我了解为什么会这样吗?

我已经尝试过使用单张和多张图片

import matplotlib.pyplot as plt
import numpy as np
import math
import random
from matplotlib.ticker import FormatStrFormatter
from mpl_toolkits.mplot3d import Axes3D
import pandas as pd
import matplotlib.image as mpimg

fig,line,labels,ax={},{},[50],{}
X=[3000]
Y=[3000]
Z=[3000]
titles=r'microscopy'

class plotter:

    def figures(self, heading, titles, ax, fig, style, lxlim, uxlim, lylim, uylim, xlabel, ylabel):
    self.heading=heading
    self.titles=titles
    self.ax=ax
    self.fig=fig
    self.style=style
    plt.style.use(self.style)
    self.fig=plt.figure(self.heading)
    self.ax=self.fig.add_subplot(111)
    self.lxlim=lxlim
    self.uxlim=uxlim
    self.lylim=lylim
    self.uylim=uylim
    self.ax.set_xlabel(xlabel)
    self.ax.set_ylabel(ylabel)
    self.ax.grid(True)
    #self.ax.grid(False)
    self.ax.set_xlim([lxlim, uxlim])
    self.ax.set_ylim([lylim, uylim])
    self.ax.set_title(self.titles,style='italic')
    #self.ax.xaxis.set_minor_formatter(FormatStrFormatter("%.2f"))
    self.ax.xaxis.set_major_locator(plt.MultipleLocator(50))
    self.ax.xaxis.set_major_locator(plt.MaxNLocator(12))
    self.ax.yaxis.set_major_locator(plt.MaxNLocator(10))
    self.ax.xaxis.set_minor_locator(plt.MultipleLocator(10))
    #self.ax.invert_yaxis()
    #self.ax.xaxis.tick_top()
    #self.ax.xaxis.set_ticks_position('top')
    #self.ax.tick_params(labelbottom='off',labeltop='on')
    #column_labels = list('ABCD')
    #row_labels = list('WXYZ')
    #self.ax.set_xticklabels(column_labels, minor=False)
    #self.ax.set_yticklabels(row_labels, minor=False)
    #self.ax.xaxis.set_major_locator(plt.NullLocator())
    #self.ax.yaxis.set_major_locator(plt.NullLocator())
    #self.ax.xaxis.set_major_formatter(plt.NullFormatter())
    #ticks=np.linspace(200,700,26,endpoint=False)
    #ax.tick_params(axis='x', which='minor', bottom=True)
    #self.ax.set_xticks(ticks,minor=True)
    #self.fig.savefig('figure.png', bbox_inches='tight')

styler = dict(size=11, color='brown')
spectra=plotter()
spectra.figures('Fibres', 'Fibres', ax, fig, 'classic', None, None, None,None,None,None)

image1=mpimg.imread('geter.png')
imgplot = plt.imshow(image1)
#spectra.ax.imshow(image1)
plt.show()
#spectra.ax.axis('off')

当我在类定义之前添加最后一段时,它提供了正确的读取图像数据,但是当它在类定义之后时(如现在的代码所示),我得到的是带有轴和纯黄色的图像。我不明白为什么。我的图像基本上只是一些文件夹排列的屏幕截图。 现在,由于我的类定义不完整,我还没有将对象轴与显示图像绑定在一起。但是我想知道为什么会这样。

2)第二件事是,当我使用

spectra.ax.imshow(....)

代替

plt.imshow(....)

该代码无效,并给出相同的黄色色调图像。

0 个答案:

没有答案