def get_boundingbox(frame_set, use_region_of_interest=False):
fstd = np.std(frame_set,axis=0)
framesstd = np.mean(fstd)
#th = framesstd / 3
th = framesstd
#ones = np.ones(8)
ones = np.ones(10)
big_var = (fstd>th)
if not use_region_of_interest or framesstd==0:
# no bb, take full frame
frameROIRes = np.zeros([20,50,50])
for i in range(20):
frameROIRes[i,:,:] = scipy.misc.imresize(frame_set[i,:,:], size=(50,50),interp='bilinear')
#frameROIRes = np.reshape(frameROIRes, (1,frameROIRes.shape[0]*frameROIRes.shape[1]*frameROIRes.shape[2]))
frameROIRes = frameROIRes.astype(np.float32)
return frameROIRes #, framesstd)
big_var = big_var.astype(np.float32)
big_var = filters.convolve1d(big_var, ones, axis=0)
big_var = filters.convolve1d(big_var, ones, axis=1)
th2 = 80
i,j = np.nonzero(big_var>th2)
if (i.size > 0):
si = np.sort(i)
sj = np.sort(j)
ll = si.shape[0]
th1 = int(round(ll*0.03))
th2 = int(np.floor(ll*0.98))
y1 = si[th1]
y2 = si[th2]
x1 = sj[th1]
x2 = sj[th2]
# cut image ROI
if (((x2-x1)>0) and ((y2-y1)>0)):
framesRoi = frame_set[:,y1:y2,x1:x2]
else:
framesRoi = frame_set[:,:,:]
else:
framesRoi = frame_set[:,:,:]
# debug - show ROI
#cv2.namedWindow('ROI', cv2.WINDOW_NORMAL)
#bla= scipy.misc.imresize(framesRoi[19,:,:], size=(200,200),interp='bilinear')
#cv2.imshow('ROI', bla)
# resize to 50x50
frameROIRes = np.zeros([20,50,50])
for i in range(20):
frameROIRes[i,:,:] = scipy.misc.imresize(framesRoi[i,:,:], size=(50,50),interp='bilinear')
#frameROIRes = frameROIRes / 255 # TODO - does this really nessacarry?
return (frameROIRes)
评论列表
文章目录