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

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

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

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

Python 3.x

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

Q&A

0回答

1013閲覧

プログラムを繋げてフォルダ内を処理し,まとめてCSVファイルとして保存する

blackmk

総合スコア23

OpenCV

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

Python 3.x

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

0グッド

0クリップ

投稿2019/01/30 04:49

編集2019/01/30 04:53

以下の2つのコードにより,画像を分割して,分割した画像の特定の値をとり,それを配列にしています.一つはこちらで教えていただいた手法です.
この作業を,フォルダ内の画像全てで行い,各々の配列をCSVファイルとしてまとめて保存したいです.

つまり,画像1枚を分割するとこのプログラムでは730枚の画像が生成され,そのそれぞれについて配列操作を行います.このプログラムの場合,1枚の分割した画像から151の行列が生成されるため,元の画像1枚からは730個の配列が得られます.
これを,画像100枚に適用して合計730
100個の配列を得て,結果として,15*73000の行列にまとめてCSVとして保存したいです.

python

1import numpy as np 2import cv2 3 4img = cv2.imread('data/*.jpg') 5 6size = 20 7 8# 端数切捨て 9v_size = img.shape[0] // size * size 10h_size = img.shape[1] // size * size 11img = img[:v_size, :h_size] 12print(v_size,h_size) 13 14v_split = img.shape[0] // size 15h_split = img.shape[1] // size 16print(v_split,h_split) 17 18for y,img_v in enumerate(np.vsplit(img, v_split)): 19 for x,img in enumerate(np.hsplit(img_v,h_split)): 20 print(x,y,img.shape) 21 cv2.imwrite('C:/Users/motooku/Desktop/divided/images/img{}{}.jpg'.format(x,y), img) # 分割された730個の画像データが保存される

python

1import cv2 2import numpy as np 3 4im = cv2.imread('./data.jpg').astype(int) 5 6b,g,r = cv2.split(im) 7 8x = (b+g+r).flatten() 9y = np.argsort(np.sort(x)) 10 11B = b.flatten() 12G = g.flatten() 13R = r.flatten() 14 15 16j= [(B[y[0]]),(B[y[99]]),(B[y[199]]),(B[y[299]]),(B[y[399]])] 17 18k= [(G[y[0]]),(G[y[99]]),(G[y[199]]),(G[y[299]]),(G[y[399]])] 19 20l= [(R[y[0]]),(R[y[99]]),(R[y[199]]),(R[y[299]]),(R[y[399]])] 21 22 23m = np.r_[j,k,l]

どのようにすれば良いかわからないので一先ず繋げてみましたが,よくわからないです.

python

1import numpy as np 2import cv2 3import glob 4 5 6 7for path in glob.glob('フォルダ') 8 img = cv2.imread(path) 9 10 size = 20 11 12 #端数切捨て 13 v_split = img.shape[0] // size 14 h_split = img.shape[1] // size 15 print(v_split,h_split) 16 17 v_split = img.shape[0] // size 18 h_split = img.shape[1] // size 19 print(v_split,h_split) 20 21 for y,img_v in enumerate(np.vsplit(img, v_split)): 22 for x,img in enumerate(np.hsplit(img_v,h_split)): 23 print(x,y,img.shape) 24 cv2.imwrite('./data/img{}{}.jpg'.format(x,y), img) #分割された730個の画像データが保存される 25 26 27 for file in glob.glob('./data/*jpg') 28 im = cv2.imread(file).astype(int) 29 30 b,g,r = cv2.split(im) 31    32 B = b.flatten() 33 G = g.flatten() 34 R = r.flatten() 35 36 x = (b+g+r).flatten() 37 y = np.argsort(np.sort(x)) 38 39 40 j= [(B[y[0]]),(B[y[99]]),(B[y[199]]),(B[y[299]]),(B[y[399]])] 41 42 k= [(G[y[0]]),(G[y[99]]),(G[y[199]]),(G[y[299]]),(G[y[399]])] 43 44 l= [(R[y[0]]),(R[y[99]]),(R[y[199]]),(R[y[299]]),(R[y[399]])] 45 46 m = np.r_[j,k,l] #15*1の配列に変換 47 48 np.savetxt('dataname.csv', m, delimeter=',')#csvとして保存? 49

他の方法などありましたら,教えていただきたいです.よろしくお願いします.

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

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

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

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

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

Q71

2019/01/30 13:36

プログラムとは、コンピュータに対する作業指示書です。あなたは、どんな指示を出したのか、理解できていますか?1つ目と2つ目のコードが動く(期待する動作をする)とは思えないのですが。 質問として、やりたいことを文章で書いてありますが、それを箇条書きにまとめてみてください。そして、その時々にわかっていること、必要なことを考えながら、細かく分解してみてください。それがプログラムになり、コードに変換できるようになります。数年の経験を積めば、やりたいことからコードまで一気に変換できるでしょう。そのために、まずは順番にするべきことを考えましょう。
blackmk

2019/01/30 14:31

わかりました.自身でもわからないまま質問していたようです.稚拙かつ思考を放棄したような内容の質問を投稿してしまいました,申し訳ありません. 最近プログラミングの魅力に気付き,初心者なりに色々なことがしたくて質問をしているのですが,やはり考えるためにはきちんとした順序があるのですね.ご指摘ありがとうございます.以後気を付け,勉強いたします.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問