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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1007閲覧

OpenCVによるテスト画像の保存方法

mayumi8

総合スコア11

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/07/01 18:52

kerasで画像生成モデル(pix2pix)を実装しようと試みている初学者です。

学習済みのgenerator_modelに複数のテスト画像(rawImage)を入力し、
出力画像を表示・保存したいと考えています。。

そのさい下記のようにOpenCVを記述するとエラーが発生してしまいました。

python

1generator_model_output = generator_model.predict(rawImage, batch_size=1, verbose=0) 2 3for i in range(10): 4 gen = generator_model_output[i] 5 im = cv2.imread(gen) 6 cv2.imwright(str(i)+'.png',im) 7

cv2.imread(変数)が良くないのでしょうか?

抽象的な質問で申し訳ありませんが、どなたか解決方法を教えて頂けますと大変ありがたいです。

よろしくお願いします。

発生している問題・エラーメッセージ

TypeError Traceback (most recent call last) <ipython-input-5-fbd55f77ab7c> in <module> ----> 1 test() <ipython-input-4-7bb5c078b31f> in test() 20 for i in range(10): 21 gen = generator_model_output[i] ---> 22 im = cv2.imread(gen) 23 cv2.imwright(str(i)+'.png',im) TypeError: bad argument type for built-in operation

該当のソースコード

Python

1def test(): 2 rawImage, procImage, rawImage_val, procImage_val = load_data(datasetpath) 3 img_shape = rawImage.shape[-3:] 4 patch_num = (img_shape[0] // patch_size) * (img_shape[1] // patch_size) 5 disc_img_shape = (patch_size, patch_size, procImage.shape[-1]) 6 7 filters_num = 64 8 axis_num = -1 9 channels_num = img_shape[-1] 10 min_s = min(img_shape[:-1]) 11 12 13 generator_model = load_generator(img_shape,disc_img_shape) 14 generator_model.load_weights('generator.h5', by_name=True) 15 16 generator_model_output = generator_model.predict(rawImage, batch_size=1, verbose=0) 17 18 for i in range(10): 19 gen = generator_model_output[i] 20 im = cv2.imread(gen) 21 cv2.imwright(str(i)+'.png',im) 22 23test()

試したこと

下記のようにmatplotlibを使用すると一応画像は保存されるのですが、
画像というよりグラフを扱っている感じがして、あまりすっきりしません。。

python

1 for i in range(10): 2 gen = generator_model_output[i] 3 plt.tick_params(labelbottom=False,labelleft=False,labelright=False,labeltop=False) 4 plt.tick_params(bottom=False,left=False,right=False,top=False) 5 plt.imshow(gen,cmap='gray') 6 plt.savefig(str(i)+'.png',cmap='gray',bbox_inches='tight',pad_inches=0.0) 7 plt.show()

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

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

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

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

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

mayumi8

2019/07/02 13:10

ご指摘ありがとうございます!おっしゃる通りです。 そこで、for 以下を下記のように修正したところ、真っ黒の画像が10枚出力されました。 画像サイズは256×256で希望通りなのですが...(泣) for i in range(10): gen = generator_model_output[i] cv2.imwrite(str(i)+'.png',gen)
mayumi8

2019/07/02 13:31

1T2R3M4さん、本当にありがとうございました。 下記のように直したところ、それっぽい画像が得られました! for i in range(10): gen = generator_model_output[i] gen = gen*255 gen = gen.astype('uint8') cv2.imwrite(str(i)+'.png',gen) なぜこのように直さないといけないのか、まだはっきり理解していないのですが(笑) ぜひ今後ともご指導の程宜しくお願いいたします。
guest

回答1

0

自己解決

解決しました。ありがとうございました。

python

1 for i in range(10): 2 gen = generator_model_output[i] 3 gen = gen*255 4 gen = gen.astype('uint8') 5 cv2.imwrite(str(i)+'.png',gen)

投稿2019/07/02 13:58

mayumi8

総合スコア11

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問