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

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

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

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

NumPy

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

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

1回答

523閲覧

【Python】画像ファイルを複数の判別式で得たものを,保存する

py-python

総合スコア14

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

NumPy

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

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2018/04/09 04:59

コード内容としては,画像の元データ(.dat)を読み込み,画像の切り取り作業を行い,
複数の条件式(cb)を通して,保存(.tif)する過程です。
エラーが出てしまい,行き詰まっているのですが,解決する方法を教えてください。
よろしくお願い申し上げます。

- コード内容

import os import sys import numpy import numpy as np import matplotlib.pyplot as plt import matplotlib.cm as cm import glob from PIL import Image import PIL path = "/media/student/data1" path2 = "/media/student/data1/ir1/" path3 = "/media/student/data1/ir2/" datalist2 = glob.glob(path2 + "*.dat") datalist3 = glob.glob(path3 + "*.dat") for data2 in datalist2: name2 = data2[len(path2)+8:-4] for data3 in datalist3: name3 = data3[len(path3)+8:-4] if name2 == name3: print name2 + ".." + name3 + "..." + "OK" data2 = np.fromfile(data2,dtype=np.float32) data3 = np.fromfile(data3,dtype=np.float32) #array hai = data2.reshape(6000,6000) retu = data3.reshape(6000,6000) #area Hai1 = hai[1500:3000] Hai2 = Hai1[:,2250:4750] ir1 = Hai2 Retu1 = retu[1500:3000] Retu2 = Retu1[:,2250:4750] ir2 = Retu2 btd = ir1 - ir2 #cb (複数条件で当てはまったものは6,それ以外は0とする) cb1 = np.where((ir1 > 200) & (ir1 <= 225) & (btd > 0) & (btd <= 2),6,0) cb3 = np.where((ir1 > 200) & (ir1 <= 223) & (btd > -2) & (btd <= 0),6,0) cb = cb1 +cb3 pil_img = Image.fromarray(cb) print "cb...ok" outdata = path + "/outdata/" + name2 + ".tif" # outdata2 = path + "/outdata/" + name2 + "_1.tif" pil_img.save(outdata)

-** 実行結果(エラー表示)**

student@student:/media/student/data1$ python cb.py 20160531-2200..20160531-2200...OK Traceback (most recent call last): File "cloud1.py", line 95, in <module> pil_img = Image.fromarray(cloud) File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 2153, in fromarray raise TypeError("Cannot handle this data type")

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

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

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

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

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

guest

回答1

0

ベストアンサー

配列のデータ型をuint8に変換してください。

python

1pil_img = Image.fromarray(np.uint8(cb))

投稿2018/04/09 05:11

hayataka2049

総合スコア30933

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

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

py-python

2018/04/09 05:50

ありがとうございます。 pil_img = Image.fromarray(np.float32(cb)) で実行したら,保存できていました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問