質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3178閲覧

特定のピクセル値の部分を指定した色で塗る方法

trafalbad

総合スコア303

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/10/17 08:18

グレースケール画像があります。ピクセルが「0, 10, 20, 30, 40, 50」のカラーマップのように特定のピクセルのみで構成されています。

python

1array([[ 0, 0, 0, ..., 0, 0, 0], 2 [ 0, 0, 0, ..., 0, 0, 0], 3 [ 0, 0, 0, ..., 0, 0, 0], 4 ..., 5 [20, 20, 20, ..., 0, 0, 0], 6 [10, 10, 10, ..., 0, 0, 0], 7 [30, 30, 30, ..., 0, 0, 0]], dtype=uint8) 8 9gray_img = cv2.imread("test.jpg", 0) 10print(gray_img.shape) 11>>>(9702, 9702) 12print(np.unique(gray_img)) # pixcel数の種類 13>>>[0, 10, 20, 30, 40, 50] 14 15X = np.zeros(gray_img.shape, np.float32) 16# 10,50を白、 それ以外を黒にしたい

この画像の10と50の部分を他と区別するため、
10と50を白
それ以外を黒
にする方法はないでしょうか?

np.zeros()で行列を作ってから代入するのはたまに聞くのですが、具体的なやり方がわからないためご教授お願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

numpy.where() をお使いください。

numpy.where — NumPy v1.17 Manual

np.where(条件, 条件式が成り立つ場合の値, 条件式が成り立たない場合の値)

今回10または50の値かどうかで色を分けたいとのことなので、条件式は (img == 10) | (img == 50) になります。

python

1import matplotlib.pyplot as plt 2import numpy as np 3 4# 適当な配列作成 5img = np.random.choice([0, 10, 20, 30, 40, 50], size=(100, 100)) 6 7# 10, 50 は白 (255)、それ以外は0 8dst = np.where((img == 10) | (img == 50), 255, 0) 9 10fig, ax = plt.subplots(facecolor="w") 11ax.imshow(dst) 12 13plt.show()

イメージ説明

投稿2019/10/17 08:27

編集2019/10/17 08:30
tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問