創屋ぷれす

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.