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')
评论列表
文章目录