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

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

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

Bash on Ubuntu on Windowsは、Windows Subsystem for Linux(WSL)の非推奨の名称。Windows10およびWindows Server上でLinuxのバイナリ実行ファイルをネイティブ実行するための互換レイヤーです。

OpenCV

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

Python 3.x

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

リサイズ

コントロール、ウィンドウ、フォームやスクリーンのサイズ変更を指します。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Q&A

解決済

2回答

4125閲覧

複数読み込んだ画像をリサイズし同じ名前で保存したい

oinari03

総合スコア59

Bash on Ubuntu on Windows

Bash on Ubuntu on Windowsは、Windows Subsystem for Linux(WSL)の非推奨の名称。Windows10およびWindows Server上でLinuxのバイナリ実行ファイルをネイティブ実行するための互換レイヤーです。

OpenCV

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

Python 3.x

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

リサイズ

コントロール、ウィンドウ、フォームやスクリーンのサイズ変更を指します。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

0グッド

1クリップ

投稿2020/07/31 10:11

編集2020/08/01 18:06

やりたいこと

・フォルダから複数の画像を取得
・リサイズ
・ファイル名の同じ名前で保存したい ←ここです。

例えば

.data/cat/の中に
00001.jpg
00002.jpg



と続く画像を以下のコードで一枚ずつリサイズします。
それらを同じ名前で000001.jpg、000002.jpgと一枚ずつ保存したいです。

環境

python3.7
opencv 4.2
wsl 1(ubuntu18.04)
windows 10 home

書いたコード

python

1 2import os 3import glob 4import cv2 5# 画像を入力 6imgs = glob.glob('./data/cat/*.jpg') 7 8 9def trans_square(imgs): 10 11 for i,img_list in enumerate(imgs): 12 img = cv2.imread(img_list) 13 resize_img = cv2.resize(img,(32,32)) 14 h,w,c = resize_img.shape 15 cv2.imwrite('/home/output/sample.png',resize_img) 16 print("{},{},{}".format(h,w,c)) 17 if i==0: 18 break 19 20 return img 21 22 23 24 25trans_square(imgs)

このままだと当然ながら一枚しか保存できないのです。。。。

試したこと

こちらに似たようなことをされている方がいましたが、初心者ゆえに似たようなコードから自分のコードに落とし込めないでいます。
完全に力不足です。

おねがいしたいこと

上にあるコードをやりたいことにそうような形にする方法やコードのレビューをしていただければと思います。
何か至らない点があればその都度修正いたしますのでよろしくお願いします。

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

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

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

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

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

TakaiY

2020/07/31 14:53

-「ファイル名の同じ名前で保存したい」とはどういう意味でしょうか。 例をあげて具体的に説明してください。 "元画像が「hoge.jpg」のときは「hoge.png」にしたい" など - 以下のようになっているのはなぜですか? if i==0: break
yuki23

2020/08/01 05:13

OpenCV でやる必要はありますか? 正直、向いていない用途です
oinari03

2020/08/01 18:10

このときif == 0で止めているのは1~100枚ほど連番で連なった画像をリサイズしているのですが、どのように一枚ずつ違う名前保存すればわからなかったので1番目で止めました。(0001という名前の処理前画像をリサイズしたら0001という名前で保存、2なら2に、3なら3にという感じです...) 今回はopencvでやることが自分の中の課題でどうしても達成したいものです。 正直、初心者過ぎて話の内容についていけない可能性がありますがお許しください。。。
guest

回答2

0

これでどうですか?

python

1import os 2import glob 3import cv2 4 5imgs = glob.glob('./data/cat/*.jpg') 6for i in imgs: 7 img = cv2.imread(i) 8 resize_img = cv2.resize(img, (32, 32)) 9 cv2.imwrite(i, resize_img)

投稿2020/08/02 03:57

yuki23

総合スコア1448

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

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

0

ベストアンサー

以下にて~/0001.jpgのうち0001のみ抽出できます。
参考:Pythonでパス文字列からファイル名・フォルダ名・拡張子を取得、結合

Python

1 fname = os.path.splitext(os.path.basename(img_list))[0] 2 cv2.imwrite(f'/home/output/{fname}.png',resize_img)

投稿2020/08/02 04:11

can110

総合スコア38262

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

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

oinari03

2020/08/03 03:35

ありがとうございます!!参考リンクも助かります!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問