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

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

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

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

Q&A

解決済

2回答

255閲覧

複数の画像ファイルを読み取り、画像処理を施した上で 処理後の画像を一括して表示したい

taboopython

総合スコア40

Python 3.x

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

0グッド

0クリップ

投稿2019/06/20 20:16

複数の画像ファイルを読み取り、画像処理を施した上で

処理後の画像を一括してprintなど表示したく、コードを次のように書いています。

python

1 2with open(image, "rb") as img: 3 4if __name__ == "__main__": 5 6 for i in range(1,10): 7 8 img = r"/Users/test{i}.png" 9 10 print(res)

しかし、これだとpngファイル自体を読み取れないようで次のようなエラーが出てきました。
FileNotFoundError: [Errno 2] No such file or directory: '/Users/test{i}.png'

連続ファイルの指定方法が問題なのでしょうか?

それとも、PATHの問題なのでしょうか?

原因、対応方法がわかればご教示いただければ幸いです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

フォーマット済み文字列リテラルですか?
ならば、文字列の先頭は「r」ではなく、「f」です。

python

1for i in range(1, 10): 2 print(f'/Users/test{i}.png')
/Users/test1.png /Users/test2.png /Users/test3.png /Users/test4.png /Users/test5.png /Users/test6.png /Users/test7.png /Users/test8.png /Users/test9.png

ただし、先のマニュアルに書いてあるとおり、フォーマット済み文字列リテラルはバージョン3.6から追加された機能です。
少し古い環境で動かす必要性があれば、str.formatメソッドを使用すべきです。

python

1for i in range(1, 10): 2 print('/Users/test{i}.png'.format(i=i))

ちなみに、文字列の先頭に「r」が付くものは「rawリテラル」であり、エスケープシーケンス(「\」に続く文字列で、特別な意味を持つもの。「\n」(改行コード)など)が無効になります。

投稿2019/06/25 11:43

katsuko

総合スコア3469

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

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

taboopython

2019/06/26 07:40

ありがとうございます。fでやってみました。 test1.pngのみはprintできたのですが。。。その他のファイルがうまく表示されませんでした。 例えばですが、ocrでテキストを検出し、pngの中から検出したテキストをテキストごとに出力してみることを試みてみました。以下のコードです。 test2もtest3も検出されないはずはない、基本的なテキストがあるpngなので、ファイルの問題ではなく、コードのどこかがおかしいのだと思いますが。。。おわかりになりますでしょうか? for i in range(1,3): img_path = f"/Users//Desktop/python/test{i}.png" res_json = text_detection(img_path) res_text = res_json["responses"][0]["textAnnotations"][0]["description"] #print(json.dumps(res_json, indent=4, sort_keys=True, ensure_ascii=False)) print(res_text)
katsuko

2019/06/26 15:12

OCRは知りません。 とりあえずループを回さず、問題のあるファイルを一つ一つ実行するなど、いろいろと試してみてはいかがですか。
taboopython

2019/06/26 23:20

ありがとうございます。いろいろやってみます。
guest

0

連続ファイルの指定方法が問題なのでしょうか?
それとも、PATHの問題なのでしょうか?

両方です。
文字列中にiと書いても、文字としてのiなのか、変数のiなのか区別出来ません(いや、文字のiと解釈する)。
パスは、OSにもよりますが、ルートからの指定でいいのですか?
それから、print(res)で期待するのは?

投稿2019/06/20 22:51

Q71

総合スコア995

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

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

taboopython

2019/06/24 23:04

ありがとうございます。PATHの問題と、print(res)の部分は解決できそうです。 連続ファイルの指定の方法の件、 おっしゃる部分は /Users/test{i}.png の test{i}の部分と思いますが、この定義をについて何かうまいやり方はありますでしょうか?イメージとしては、 test1.png〜test10.pngまで、テキストファイルを読み込ませるでそれを全て画像処理させて保存したいと思っております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問