import os
from PIL import Image
from sklearn import metrics, neighbors
import numpy as np
from operator import truediv
path = 'predict'
path2 = 'label'
all_iou = 0
all_acc=0
account=[]
i = 0;
for filename in os.listdir(r""+path):
str1 = path+'/'+filename
im = Image.open(str1)
im = np.array(im)
str2 = path2 + '/'+filename
im2 = Image.open(str2)
im2 = np.array(im2)
cal_outputs = im.flatten()
label = im2.flatten()
c = metrics.confusion_matrix(cal_outputs, label)
FP = c .sum(axis=0) - np.diag(c )
FN = c .sum(axis=1) - np.diag(c )
TP = np.diag(c )
TN = c .sum() - (FP + FN + TP)
print(FP)
list_diag = np.diag(c)
list_raw_sum = np.sum(c,axis=1)
each_acc = np.nan_to_num(truediv(list_diag,list_raw_sum))
print(each_acc)
average = np.mean(each_acc)
all_acc += average
MIou = ( TP / (TP + FP + FN) + TN / (TN + FN + FP) ) / 2
print(MIou)
mean_iou=np.mean(MIou)
all_iou += mean_iou
i+=1
ai = np.sum(each_acc)
print(ai)
all_acc *=100
all_acc /= i
all_iou *= 100
all_iou /= i
# average_acc = np.mean(each_acc)
print(all_iou)
print(all_acc)