in main/src/image-inspector/image-inspector.py [0:0]
def handler(event, context):
item = event['Item']
imageId = item['imageId']
bucket = item['bucket']
key = item['key']
numChannels=0
if 'channelKeys' in item:
numChannels=len(item['channelKeys'])
imageKeys = []
if numChannels==0:
imageKeys.append(key)
else:
channelKeys=item['channelKeys']
for channelKey in channelKeys:
imageKeys.append(key + channelKey['keysuffix'])
if numChannels==0:
try:
np=bi.getImageFromS3AsNumpy(bucket,imageKeys[0])
except Exception as err:
errStr = "exception={0}".format(err)
print("Error loading bucket="+bucket+" key="+imageKeys[0]+" "+errStr)
applyErrorResult(imageId)
return { "imageId": imageId, "valid": False }
if passZeroCheck(np):
dims = getDimensions(np)
result = { "imageId" : imageId, "valid" : True, "width": dims[0], "height": dims[1], "depth": dims[2], "channels": 1 }
applyInspectionResult(result)
return { "imageId": imageId, "valid": True }
else:
dims=[]
for i, channel in enumerate(item['channelKeys']):
try:
np=bi.getImageFromS3AsNumpy(bucket, imageKeys[i])
except Exception as err:
errStr = "exception={0}".format(err)
print("Error loading bucket="+bucket+ " key="+imageKeys[i]+" "+errStr)
applyErrorResult(imageId)
return { "imageId" : imageId, "valid" : False }
ndims = getDimensions(np)
if i==0:
dims.append(ndims[0])
dims.append(ndims[1])
dims.append(ndims[2])
else:
if not(dims[0]==ndims[0] and dims[1]==dims[1] and dims[2]==dims[2]):
print("Error dimensions do not match for channel bucket="+bucket+ " key="+imageKeys[i])
applyErrorResult(imageId)
return { "imageId" : imageId, "valid" : False }
result = { "imageId" : imageId, "valid" : True, "width" : dims[0], "height" : dims[1], "depth" : dims[2], "channels" : numChannels }
applyInspectionResult(result)
return { "imageId" : imageId, "valid" : True }