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

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

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

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

570閲覧

python+openCVで画像の分割

Taka11

総合スコア14

OpenCV

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/09/17 06:41

編集2018/09/17 07:01

前提・実現したいこと

python+openCVで画像を縦横で分割をして、それぞれの画像を保存したいです。

参考URL:
https://qiita.com/ka10ryu1/items/015c6a6a5fa287a47828

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

MemoryError Traceback (most recent call last)

該当のソースコード

python

1import cv2 2import numpy as np 3 4img = cv2.imread('C:/Users/ito/Anaconda3/envs/Sample/pic/testimg/IMG_0073.jpg') 5 6size = 189 7v_size = img.shape[0] // size * size 8h_size = img.shape[1] // size * size 9img = img[:v_size, :h_size] 10 11v_split = img.shape[0] // size 12h_split = img.shape[1] // size 13out_img = [] 14[out_img.extend(np.hsplit(h_img, h_split)) 15 for h_img in np.vsplit(img, v_split)] 16 17#print (out_img) 18out_img = np.array(out_img) 19 20i=0 21for i in np.array(out_img): 22 x = i[0] 23 y = i[1] 24 w = i[2] 25 h = i[3] 26 #img = img[y:y+h, x:x+w] 27 28cv2.imwrite('C:/Users/ito/Anaconda3/envs/Sample/pic/split/IMG_0073_split' + str(i) +'.png', out_img[i])

補足情報(FW/ツールのバージョンなど)

windows7 professional
python3.6.5
opencv3.3.1

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

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

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

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

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

LouiS0616

2018/09/17 07:48

エラーはどの行で発生したのですか?
Taka11

2018/09/17 08:02

最後のcv2.imwrite~の行で発生しました。
guest

回答1

0

ベストアンサー

print(str(i))してみると面白いかと。
numpyアレイに対してループしているので、iにはインデックスが入っていません

おそらく保存しようとしているファイル名があまりに長すぎてヘタっているのでしょう。


out_imgに格納された各データを保存すれば良いだけですから、
リストをインデックス付きで巡回する方法を探れば良いわけです。

次のコードが参考になるかと。

Python

1>>> lst = ['spam', 'ham', 'egg'] 2>>> for i in lst: 3... print(type(i), i) 4... 5<class 'str'> spam 6<class 'str'> ham 7<class 'str'> egg 8>>> 9>>> for i, elem in enumerate(lst): 10... print(type(i), i) 11... print(type(elem), elem) 12... 13<class 'int'> 0 14<class 'str'> spam 15<class 'int'> 1 16<class 'str'> ham 17<class 'int'> 2 18<class 'str'> egg

投稿2018/09/17 08:07

LouiS0616

総合スコア35660

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

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

Taka11

2018/09/17 08:47

ありがとうございます! 教えて頂いたコードをもとに再度コードを書き直したらうまくいきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問