簡體   English   中英

用imshow顯示圖像-Matplotlib / Python

[英]Show image with imshow - Matplotlib / Python

我正在嘗試使用imshow繪制圖像,但得到的輸出卻出乎意料...顯示圖像的方法是:

def generate_data_black_and_white_heat_map(data, x_axis_label, y_axis_label, plot_title, file_path):
        plt.figure()
        plt.title(plot_title)
        plt.imshow(data.data, extent=[0, data.cols, data.rows, 0], cmap='Greys')
        plt.xlabel(x_axis_label)
        plt.ylabel(y_axis_label)
        plt.savefig(file_path + '.png')
        plt.close()

我的數據表示為:

def __init__(self, open_image=False):
        """
        The Data constructor
        """
        self.data = misc.lena() / 255.0
        x, y = self.data.shape
        self.rows = x
        self.cols = y

我進行了一些計算,在某些時候我必須這樣做:

# A -> 2D ndarray
A.data[A.data >= 0.5] = 1.0
A.data[A.data < 0.5] = 0.0

這給了我:

在此處輸入圖片說明

但我要相反(白色背景)。 因此,我只是這樣做:

# A -> 2D ndarray
A.data[A.data >= 0.5] = 0.0
A.data[A.data < 0.5] = 1.0

然后,我得到了這個(!!!):

在此處輸入圖片說明

我只是不明白。 這對我來說沒有任何意義。 奇怪的是,因為如果我這樣做:

for x in range(A.cols):
        for y in range(A.rows):
            if A.data[x][y] >= 0.5:
                A.data[x][y] = 0.0
            else:
                A.data[x][y] = 1.0

有用。 我是否以錯誤的方式訪問某些內容?

在我心中澄清這一點的任何幫助將不勝感激。

先感謝您。

它確實在執行您要執行的操作:

A[A >= 0.5] = 0.0  #  all of you values are now < 0.5
A[A < 0.5] = 1.0   # all of your values are now 1

這樣做好多了

B = A > .5  # true (1) where above thershold
iB = B < .5 # true (1) where below threshold

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM