1

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

できます。間違った方法で何かにアクセスしていますか?

私の頭の中でこれを明確にするための助けは非常に高く評価されます.

前もって感謝します。

4

1 に答える 1

1

それはあなたがそうするように言っていることを正確にやっています:

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
于 2014-03-20T22:37:35.810 に答える