python3.5を使っています。下の画像を等高線のように書きなおしたいと思っています。
イメージとしては下のようなグラフで表したいです。
しかし、やり方が見当もつきません。
投げやりな質問で申し訳ありません。
どなたか分かる方ご教授お願いします。
退会済みユーザーが👍を押しています
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
試しに下記コードを作成してみました。
PIL, bumpy, matplotlib.pyplotライブラリを利用すれば、実現できそうです。
(追記)他の方の回答を参考にコードを修正しました。
コード
python
1from PIL import Image, ImageOps, ImageFilter 2import numpy as np 3import matplotlib.pyplot as plt 4 5# 画像読み込み 6img = Image.open('sample.png') 7# グレースケール化 8img = ImageOps.grayscale(img) 9# ぼかし 10img = img.filter(ImageFilter.GaussianBlur(50.0)) 11# 配列化 12data = np.asarray(img) 13# 等高線 14plt.contour(data) 15# 描画 16plt.show()
投稿2017/10/26 15:27
編集2017/10/27 16:37総合スコア419
0
ベストアンサー
等高線はこんな感じで描写できると思います。
Python
1from PIL import Image, ImageOps 2import numpy as np 3import matplotlib.pyplot as plt 4 5# 画像読み込み 6org_img = Image.open('data.png') 7# グレースケール化 8img = ImageOps.grayscale(org_img) 9# 配列化 10data = np.asarray(img) 11 12# 等高線を表示 13cs = plt.contour(data, linewidths=0.5, level=[50,100,150,200]) 14plt.clabel(cs, inline=1, fontsize=16, colors='k') 15plt.show()
ただし、サンプルの画像は高周波成分が多いため、残念ながらキレイな等高線にはなりません。
キレイ な等高線が出したいのであれば、LPFを通すなどして高周波成分を除去する必要があるかと思います。
投稿2017/10/27 01:33
総合スコア15898
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/10/27 22:50
2017/10/28 07:07