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

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

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

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

Q&A

1回答

1678閲覧

poisson image edithingについて教えて下さい(python初心者)。

nikoniko3

総合スコア5

Python

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

0グッド

0クリップ

投稿2020/02/08 02:50

編集2020/02/08 03:24
Poisson Image Editing William Emmanuel wemmanuel3@gatech.edu CS 6745 Final Project Fall 2017 Image loading and saving adapted from blending assignment Usage: python main.py For each image set to be processed, place a folder in `input` Each folder should have a mask file, source file, and target file. Result will be saved in output directory. """ import os import errno from os import path from glob import glob import cv2 import numpy as np import poisson IMG_EXTENSIONS = ["png", "jpeg", "jpg", "JPG", "gif", "tiff", "tif", "raw", "bmp"] SRC_FOLDER = "input" OUT_FOLDER = "output" def collect_files(prefix, extension_list=IMG_EXTENSIONS): filenames = sum(map(glob, [prefix + ext for ext in extension_list]), []) return filenames subfolders = os.walk(SRC_FOLDER) subfolders.next() for dirpath, dirnames, fnames in subfolders: image_dir = os.path.split(dirpath)[-1] output_dir = os.path.join(OUT_FOLDER, image_dir) print("Processing input {i}...".format(i=image_dir)) # Search for images to process source_names = collect_files(r'C:\Users\〇〇〇\Desktop\poisson-image-editing-master\input'*source.')) target_names = collect_files(r'C:\Users\〇〇〇\Desktop\poisson-image-editing-master\input'*target.')) mask_names = collect_files(r'C:\Users\〇〇〇\Desktop\poisson-image-editing-master\input'*mask.')) if not len(source_names) == len(target_names) == len(mask_names) == 1: print("There must be one source, one target, and one mask per input.") continue # Read images source_img = cv2.imread(source_names[0], cv2.IMREAD_COLOR) target_img = cv2.imread(target_names[0], cv2.IMREAD_COLOR) mask_img = cv2.imread(mask_names[0], cv2.IMREAD_GRAYSCALE) # Normalize mask to range [0,1] mask = np.atleast_3d(mask_img).astype(np.float) / 255. # Make mask binary mask[mask != 1] = 0 # Trim to one channel mask = mask[:,:,0] channels = source_img.shape[-1] # Call the poisson method on each individual channel result_stack = [poisson.process(source_img[:,:,i], target_img[:,:,i], mask) for i in range(channels)] # Merge the channels back into one image result = cv2.merge(result_stack) # Make result directory if needed try: os.makedirs(output_dir) except OSError as exception: if exception.errno != errno.EEXIST: raise # Write result cv2.imwrite(r'C:\Users\〇〇〇〇\Desktop\test\Blended.jpg', result) print("Finished processing input {i}.".format(i=image_dir))

前提・実現したいこと

pythonで合成画像を作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

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

File "<ipython-input-3-dda816a77788>", line 39 print "Processing input {i}...".format(i=image_dir) ^ SyntaxError: invalid syntax

該当のソースコード

File "<ipython-input-3-dda816a77788>", line 39 print "Processing input {i}...".format(i=image_dir) ^ SyntaxError: invalid syntax

試したこと

ここに問題に対して試したことを記載してください。

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

GitHubからダウンロードしました。
https://github.com/willemmanuel/poisson-image-editing

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

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

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

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

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

hayataka2049

2020/02/08 03:10

出典へのリンクを追加してください。
hayataka2049

2020/02/08 03:16 編集

質問を編集して載せてください。
guest

回答1

0

文法から見てPython2のコードのようです。とりあえずPython3ではprintは関数化されているので、

patch

1- print "Processing input {i}...".format(i=image_dir) 2+ print("Processing input {i}...".format(i=image_dir))

のように書き換える必要があります。


文法を多少修正するだけで動いたら嬉しいところですが、Python2が広く使われていた頃の古いコードだとすると、これだけで動く保証はありません。ライブラリの仕様等も変わりますので、注意が要るでしょう。

投稿2020/02/08 03:11

hayataka2049

総合スコア30933

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

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

nikoniko3

2020/02/08 03:16

画像の読み込みが上手くいっていないようでした。 ローカルのフォルダの画像を利用しようとしています。 File "<ipython-input-11-e9b743f4844c>", line 42 source_names = collect_files(r'C:\Users\〇〇〇\Desktop\poisson-image-editing-master\input',*source.') ^ SyntaxError: EOL while scanning string literal
nikoniko3

2020/02/08 03:17

ありがとうございます。 print関数は、修正しました。そのあとのエラーです。
hayataka2049

2020/02/08 03:22

inputの後に書いている'のせいで文字列リテラルが途中で途切れて構文エラーになっていますね。しかしそもそもですが、この部分はオリジナルのコードから改変する必要があったのでしょうか?
nikoniko3

2020/02/08 03:29

オリジナルで実行したところ、このようなエラーがでたので改変してみたのですが・・・。 知識不足ですみません。 --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-13-957a73e6b66f> in <module>() 32 33 subfolders = os.walk(SRC_FOLDER) ---> 34 subfolders.next() 35 36 for dirpath, dirnames, fnames in subfolders: AttributeError: 'generator' object has no attribute 'next'
hayataka2049

2020/02/08 03:38

ここもpython3になって廃止された書き方ですねー。next(subfolders)と書き換えておいてください。 --- この調子で動くまで付き合う訳にはいかないので、誠に勝手ですがここで切り上げさせていただきます。以後このコメント欄には返信しないつもりです。 どうしても行き詰まったら別の質問として投稿していただければ暇なとき見に行くかもしれませんが、そのときはまたよろしくおねがいします。
nikoniko3

2020/02/08 04:23

丁寧にありがとうございました。 もう少し、頑張ってみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問