J'ai quelques questions pour faire des projets de flux optique. J'utilise Python 2 (en planifiant d'utiliser des lasagnes pour utiliser le deep learning pour apprendre le flux optique), et je ne sais pas comment convertir les fonctions C++ en python pour la visualisation des flux.flux optique fichiers .flo
J'ai téléchargé (de http://vision.middlebury.edu/flow/data/comp/zip/other-gt-flow.zip) des paires d'images où je dois estimer leur flux optique, et leur flux de vérité au sol (.flo de fichier). Le problème est, quand je lis le fichier .flo dans le programme, c'est un code vectorisé. Comment puis-je les voir comme ils apparaissent sur la page Web (http://vision.middlebury.edu/flow/data/)? J'ai lu de diverses sources et essayé le suivant, mais ne fonctionne pas.
En évaluant EPE (erreur de point final) sous quelle forme dois-je avoir ma prédiction à comparer avec le fichier .flo?
Le code:
################################ Reading flow file ################################
f = open('flow10.flo', 'rb')
x = np.fromfile(f, np.int32, count=1) # not sure what this gives
w = np.fromfile(f, np.int32, count=1) # width
h = np.fromfile(f, np.int32, count=1) # height
print 'x %d, w %d, h %d flo file' % (x, w, h)
data = np.fromfile(f, np.float32) # vector
data_2D = np.reshape(data, newshape=(388,584,2)); # convert to x,y - flow
x = data_2D[...,0]; y = data_2D[...,1];
################################ visualising flow file ################################
mag, ang = cv2.cartToPolar(x,y)
hsv = np.zeros_like(x)
hsv = np.array([ hsv,hsv,hsv ])
hsv = np.reshape(hsv, (388,584,3)); # having rgb channel
hsv[...,1] = 255; # full green channel
hsv[...,0] = ang*180/np.pi/2 # angle in pi
hsv[...,2] = cv2.normalize(mag,None,0,255,cv2.NORM_MINMAX) # magnitude [0,255]
bgr = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR)
bgr = draw_hsv(data_2D)
cv2.imwrite('opticalhsv.png',bgr)