2017-09-18 5 views
0

私はjpg形式のイメージファイルを入力として必要とする関数を作成しようとしていますが、呼び出すたびに配列を出力します。これは私がこれまでに達成するものである:NameError::名「kvinna」が定義されていないjpegイメージをとり、配列として保存する関数を定義します。

import scipy.misc as sm 
import numpy as np 
from PIL import Image 

def imagefunc(image): 
    try: 
     i = Image.open(image) 
     if i.format == 'jpg': 
      return i.format == 'jpg' 
    except OSError: # Checking for different possible errors in the input file 
     print ('This is not a jpg image! Input has to be a jpg image!') 
     return False 
    except FileNotFoundError: # Another check for error in the input file 
     print ('No image was found! Input file has to be in the same directory as this code is!') 
     return False 

    imgarray = np.array(sm.imread(image, True)) 
    return imgarray 

問題は、私は、「imagefunc(kvinna)」それを呼び出すとき、それは出力JPEG画像を開くためにということです。私はここで何が欠けていますか?コードが間違っているか、ファイルディレクトリの問題ですか?おかげ

+0

「kvinna.jpeg」で試してください – bhansa

+0

画像のディレクトリがあなたのスクリプトと同じであることを確認してください。また、関数を呼び出すときには引用符と書式を使用する必要がありますので、次のようにしてください: 'imagefunc( 'kvinna.jpg')' – JJAACCEeEKK

+0

@JJAACCEeEKK、愚かな私、それは問題でした。どうもありがとう。今私はなぜこの質問が票を落として得たか理解する – Sam

答えて

1

Reading and Writing Images

あなたは正しく画像を開いていない、ので、Name Error

i = Image.open(image) # image should be "image_name.ext" 
ここ

imageは拡張子で"kvinna.jpeg"する必要があります。

ので、関数の呼び出しは次のようになります。imagefunc("kvinna.jpeg")さらにチェックしたり、関数定義のいずれかJPEGまたはJPG

Image.open(image) Imageオブジェクトを返し、後でそのオブジェクトの拡張子をチェックします。

関連する問題