2017-12-28 28 views
0

일련의 DNG 원시 사진 파일을 처리하려고하는데 첫 번째 패스 (첫 번째 파일)에서는 모두 잘 작동합니다. for-next 루프를 통해 두 번째 패스 중에 두 번째 DNG 파일을 읽으려고하면 'rawpy._rawpy.RawPy'객체에 raw.imread ("file) 원시 : ".파이썬 'rawpy._rawpy.RawPy'객체에는 두 번째 패스 후에 '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 

나는 아직 원시 객체를 닫으려고했으나 인터넷 검색에서 컨텍스트 관리자를 사용할 때 필요하지 않습니다. 도움말이나 제안을 환영합니다. 미리 감사드립니다.

답변

1

rawpy 모듈 (raw)의 별칭을 읽고있는 이미지로 덮어 쓰고 있습니다. 즉, 루프를 통과하는 두 번째 패스에서 오류가 발생합니다.

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, 나 자신을 알아 차렸을 것입니다. 당신이 말한 것처럼 효과가있었습니다. 성 – noste99