utils.py 文件源码

python
阅读 18 收藏 0 点赞 0 评论 0

项目:VGG 作者: jackfan00 项目源码 文件源码
def testonefile(testmodel, img_path, confid_thresh=0.3, fordebug=False ):
        (s,w,h,c) = testmodel.layers[0].input_shape
    fimg, sx, sy, dx, dy, flip,ssx,ssy = genregiontruth_bnum.crop_image(img_path.strip(), w, h, randomize=False)
    xx = fimg.copy()
    img = fimg.astype(float)
    if fordebug:  # read label
        fn=img_path.replace("/JPEGImages/","/labels/")
        fn=fn.replace(".jpg",".txt")              #VOC
        boxlist = genregiontruth_bnum.readlabel(fn.strip(), sx, sy, dx, dy, flip, ssx, ssy)
        for box in boxlist:
            draw.rectangle([(box.x-box.w/2)*w,(box.y-box.h/2)*h,(box.x+box.w/2)*w,(box.y+box.h/2)*h])
    #
    ttimg, x0_list, y0_list, x1_list, y1_list, classprob_list, class_id_list, confid_value_list = predict(preprocess_input(np.asarray([xx])), testmodel, confid_thresh,w,h,c)

    iimg = Image.fromarray(img.astype(np.uint8))
    draw = ImageDraw.Draw(iimg, 'RGBA')

    sortedindexlist = np.argsort(confid_value_list)
    colors=[]
    for i in range(3):
        for j in range(7):
            if i==0:
                rcolor = (j+1)*32
                gcolor = 0
                bcolor = 0
            elif i==1:
                rcolor = 0
                gcolor = (j+1)*32
                bcolor = 0
            else:
                rcolor = 0
                gcolor = 0
                bcolor = (j+1)*32
            colors.append( (rcolor, gcolor, bcolor, 127) )
    #print colors

    for i in range(len(confid_value_list)):
        index = sortedindexlist[len(confid_value_list)-i-1]
        for k in range(5): # thick line
            draw.rectangle([x0_list[index]+k,y0_list[index]+k,x1_list[index]-k,y1_list[index]-k], outline=colors[class_id_list[index]])

        labelim = Image.open(cfgconst.label_names[class_id_list[index]])
        draw.bitmap((x0_list[index],y0_list[index]),labelim)

        x = (x0_list[index]+x1_list[index])/2.
        y = (y0_list[index]+y1_list[index])/2.
        x0 = int(x/w*cfgconst.side)*w/cfgconst.side
        y0 = int(y/h*cfgconst.side)*h/cfgconst.side
        x1 = x0 + float(w)/cfgconst.side
        y1 = y0 + float(h)/cfgconst.side
        draw.rectangle([x0,y0,x1,y1], fill=colors[class_id_list[index]] )
        print cfgconst.label_names[class_id_list[index]].split('/')[1].split('.')[0]+': '+str(confid_value_list[index])
    del draw
    iimg.save('predicted.png')
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号