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

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

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

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

Python 3.x

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

Q&A

解決済

1回答

3380閲覧

画像の水増しを行いたい

Madao_0724

総合スコア27

OpenCV

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

Python 3.x

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

0グッド

0クリップ

投稿2019/06/01 10:54

現在、Deep Learningのためのデータセットを作成するにあたり、画像の水増しを行おうと考えています。以下のURLを参考にしました。
参考URL

また、作成したコードが以下のものとないます。

python

1import os 2import cv2 3import glob 4from scipy import ndimage 5""" 6Faceディレクトリから画像を読み込んで回転、ぼかし、閾値処理をしてFaceEditedディレクトリに保存する. 7""" 8for a in range(0,141): 9 print("{}の写真を増やします。".format(a)) 10 in_dir = "./cut_Steve_Jobs/" 11 out_dir = "./cut_Steve_Jobs/" 12 os.makedirs(out_dir, exist_ok=True) 13 in_jpg=glob.glob(in_dir) 14 img_file_name_list=os.listdir("./cut_Steve_Jobs/") 15 for i in range(len(in_jpg)): 16 #print(str(in_jpg[i])) 17 img = cv2.imread(str(in_jpg[i])) 18 # 回転 19 for ang in [-10,0,10]: 20 img_rot = ndimage.rotate(img,ang) 21 img_rot = cv2.resize(img_rot,ImgSize) 22 fileName=os.path.join(out_dir,str(i)+"_"+str(ang)+".jpg") 23 cv2.imwrite(str(fileName),img_rot) 24 # 閾値 25 img_thr = cv2.threshold(img_rot, 100, 255, cv2.THRESH_TOZERO)[1] 26 fileName=os.path.join(out_dir,str(i)+"_"+str(ang)+"thr.jpg") 27 cv2.imwrite(str(fileName),img_thr) 28 # ぼかし 29 img_filter = cv2.GaussianBlur(img_rot, (5, 5), 0) 30 fileName=os.path.join(out_dir,str(i)+"_"+str(ang)+"filter.jpg") 31 cv2.imwrite(str(fileName),img_filter) 32 33print("画像の水増しに大成功しました!") 34

実行したところ、以下のようなエラーが出てしまいます。
RuntimeError: invalid rotation plane specified
無効な回転面とはなんなのでしょうか?
テストデータの水増し作業をしたことがなかったため解決策がわかりません。教えていただけると助かります。よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

scipyのGithubを見てみると、以下のような状況で質問のエラーが発生するようです。

#axesの中身が0以下、もしくはaxesの要素が入力の次元数を超えている場合 if axes[0] < 0 or axes[1] < 0 or axes[0] >= ndim or axes[1] >= ndim: raise ValueError('invalid rotation plane specified')

参考:https://github.com/scipy/scipy/blob/master/scipy/ndimage/interpolation.py(引用部分は703~704行目)

axesはこちら側で設定しなければ自動的にaxes=(0,1)となり、質問者さんのコードにおいてaxesを新たに設定している様子は見られません。

となると、残るはndim側、すなわち入力(img)の次元数に問題があるのだと思います。

print(img.ndim)などを用いて次元数が1以下になっていないかどうか確認してみてはいかがでしょうか(画像データならば次元数は2になるはず)。

ご参考になれば幸いです。

投稿2019/06/01 13:38

amahara_waya

総合スコア1029

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問