創屋ぷれす

Python コード 備忘録 numpy 1 代入について

最近、業務で画像を扱うことが多くなってきた。
データの扱い方が今までのlistや、Dictoinaryといったものとは大きく違ってきた。
今回は、データの扱いでnumpyではまったことを記述

numpyのarrayのサンプルとして画像をグレースケール読み込む


import cv2
np_img = cv2.imread(“aaa.jpg”, 0)

numpyの条件を取得(真っ白の箇所を抽出)


np_white = np_img == 255

①画像の一部を変更(画像の上 100pxを黒くする)


np_img[:100] = 0

↑ np_imgの値は変わります


②真っ黒だった箇所を真っ白に変更


np_img[np_white] = 0

↑ np_imgの値は変わります


③画像の上100pxの中でもともと真っ白だった箇所を真っ白に変更


np_img[np_white][:100] = 255

↑ np_imgの値が変わりません


④画像の上 100pxの中で


np_condition_100 = np_condition[:100]
np_img[:100][np_condition_100] = 100

↑ np_imgの値が変わります


実験結果:
test1 = np_img[np_white]
test1[0] = 255

test1は1次元の配列で取得され np_imgの値は変わりません


test2 = np_img[:100]
test2は2次元の配列で取得される
test2[0,0] = 255

test2は2次元の配列で取得され np_imgの値がかわります


代入する時の挙動が違ったんですね。。。

Comments are closed.