示例#1
0
 def result(self, image_path, results, expected, compare=True):
     fullpath = path = os.path.abspath(os.path.join('data', image_path))
     if self.resized_dir is not None:
         im = image.max_size(image.load(path), (320, 240))
         path = os.path.join(self.resized_dir, os.path.basename(image_path))
         print os.path.dirname(image_path)
         image.save(im, path)
         del im
     self.write('<tr>')
     self.write('<td rowspan="%(len)d"><a href="%(fullpath)s"><img src="%(path)s" width="320" /><br />%(imgpath)s</a></td>',
         fullpath=fullpath, path=path, imgpath=image_path, len=len(results))
     for i,pair in enumerate(results.iteritems()):
         name,result = pair
         if i != 0:
             self.write("</tr><tr>")
         self.write('<td>%(name)s</td><td>%(score)r</td>',
             name=name, score=result[1])
         self.write('<td class="%(cls)s">%(confirmed)s</td><td>%(expected)s</td>',
             cls="bad" if compare and result[2] != (name in expected) else "good",
             confirmed="Yes" if result[2] else "",
             expected="Yes" if name in expected else "")
         self.write('<td class="%(cls)s">%(timing).2f second(s)</td>',
             cls="bad" if compare and result[3] > 10 else "",
             timing=result[3])
     self.write("</tr>")
def measure(im, debug=False):
    im2 = image.max_size(im, (800, 600))
    
    b,g,r = image.split(im2)
    #cv.EqualizeHist(r,r)
    ##cv.EqualizeHist(g,g)
    ##cv.EqualizeHist(b,b)
    im2 = image.merge(b,g,r)
    
    eyes = 0
    #objs = []
    #for cascade in eye_cascades:
    #    print cascade
    #    cascade = cv.Load(cascade)
    #    objs = filter_overlap(detect(im, cascade))
    #    draw_objects(im, objs, color=cv.RGB(0,255,0))
    #    eyes += len(objs)
    #faces = 0
    if debug:
        im3 = cv.CloneImage(im2)
    faces = []
    for cascade in face_cascades:#(face_cascades[0],face_cascades[-1]):
        cascade = cv.Load(cascade)
        detected_faces = detect(im2, cascade)
        faces += detected_faces
        if debug:
            for i,rect in enumerate(faces):
                rect.draw(im3, color=cv.RGB(255,16*i,16*i))
    if debug:
        image.show(im3, "Faces + Repeats")
    faces = filter_overlap(faces)
    #print (objs[1], objs[6])
    #draw_objects(im2, map(tuple, faces.keys()))
    for rect, count in faces.iteritems():
        rect.draw(im2, color=cv.RGB(255,0,0))
    #print (objs[3],objs[13])
    #draw_objects(im, filter_overlap((objs[3],objs[13])))
    
    #objs = []
    #for cascade in body_cascades:
    #    print cascade
    #    cascade = cv.Load(cascade)
    #    objs += detect(im, cascade)
    #draw_objects(im, filter_overlap(objs), color=cv.RGB(0,0,255))

    #objs = []
    #for cascade in mouth_cascades:
    #    print cascade
    #    cascade = cv.Load(cascade)
    #    objs += detect(im, cascade)
    #draw_objects(im,  filter_overlap(objs), color=cv.RGB(255,0,255))
    
    score = 0
    for face_rect, count in faces.iteritems():
        score += count * 0.25 + 0.15
    print faces

    if debug:
        image.show(im2, "Faces")
    return (im2, faces), score
 def load(self, max_size=None):
     try:
         im = image.load(self.imgpath)
     except IOError:
         return None
     if max_size is not None:
         im = image.max_size(im, max_size)
     return im
 def load(self, max_size=None):
     try:
         im = image.load(self.imgpath)
     except IOError:
         return None
     if max_size is not None:
         im = image.max_size(im, max_size)
     return im