2017-12-28 5 views
0

一連のDNG RAW画像ファイルを処理しようとしましたが、すべて最初のパス(最初のファイル)でうまく動作します。 2回目のfor-nextループで2番目のDNGファイルを読み込もうとすると、エラーメッセージ 'rawpy._rawpy.RawPy'が返されます。オブジェクトには、 "raw.imread(file )rawとして: "Pythonの 'rawpy._rawpy.RawPy'オブジェクトには、2回目のパスの後に 'imread'属性がありません。

import numpy as np 
import rawpy as raw 
import pyexiv2 

from scipy import stats 
for file in list: 
    metadata = pyexiv2.ImageMetadata(file) 
    metadata.read() 
    with raw.imread(file) as raw: 
     rgb16 = raw.postprocess(gamma=(1,1), no_auto_bright=True, output_bps=16) 
     avgR=stats.describe(np.ravel(rgb16[:,:,0]))[2] 
     avgG=stats.describe(np.ravel(rgb16[:,:,1]))[2] 
     avgB=stats.describe(np.ravel(rgb16[:,:,2]))[2] 
    print i,file,'T=', metadata['Exif.PentaxDng.Temperature'].raw_value,'C',avgR,avgG,avgB 
    i+=1 

Iは、生のオブジェクトを閉じるためにすでに試みたがグーグルからIは、コンテキストマネージャを使用している場合には不要であることを理解。 ヘルプやご提案は大歓迎です。 ありがとうございます。

答えて

1

rawpyモジュール(raw)のエイリアスを、読んでいる画像で上書きしています。つまり、ループの2番目のパスでエラーが発生します。

import rawpy as raw  # here's the first thing named "raw" 
#... 

for file in list: 
    #... 

    with raw.imread(file) as raw: # here's the second 
     #... 

変数のいずれかとは異なる名前を選択すると、コードが機能するはずです。

+0

ありがとうございましたBlckknght、私は自分自身に気づいていたはずです。それはあなたが言ったように働いた。 St – noste99

関連する問題