from config import TEST_FACE
from config import TEST_NONFACE
from config import TRAINING_IMG_HEIGHT
from config import TRAINING_IMG_WIDTH
from config import ADABOOST_CACHE_FILE
from config import POSITIVE_SAMPLE
from config import LABEL_POSITIVE

from adaboost import getCachedAdaBoost

from image  import ImageSet
from haarFeature import Feature

import numpy

face    = ImageSet(TEST_FACE,    sampleNum = 100)

nonFace = ImageSet(TEST_NONFACE, sampleNum = 100)

tot_samples = face.sampleNum + nonFace.sampleNum

haar   = Feature(TRAINING_IMG_WIDTH, TRAINING_IMG_HEIGHT)

mat = numpy.zeros((haar.featuresNum, tot_samples))

for i in range(face.sampleNum):
    featureVec = haar.calFeatureForImg(face.images[i])
    for j in range(haar.featuresNum):
        mat[j][i                     ]  = featureVec[j]
        
for i in range(nonFace.sampleNum):
    featureVec = haar.calFeatureForImg(nonFace.images[i])
    for j in range(haar.featuresNum):
        mat[j][i + face.sampleNum] = featureVec[j]


model = getCachedAdaBoost(filename = ADABOOST_CACHE_FILE + str(0), limit = 10)

output = model.prediction(mat, th=0)

detectionRate = numpy.count_nonzero(output[0:100] == LABEL_POSITIVE) * 1./ 100

print output