cv2.waitKey(0)
cv2.destroyAllWindows()

# Compute F
vo = VisualOdometry()
[match.good_kp1, match.good_kp2] = vo.EstimateF_multiprocessing(match.good_kp1, match.good_kp2)

print "good_kp1", len(match.good_kp1)

print "good_kp2", len(match.good_kp2)
#sk = np.array([[0, -vo.e[2], vo.e[1]], [vo.e[2], 0, -vo.e[0]],
#               [-vo.e[1], vo.e[0], 0]])
#vo.P_from_F(vo.F)

#vo.create_P1()

print "prev F", vo.F
#vo.optimal_triangulation(match.good_kp1, match.good_kp2)
# error = vo.functiontominimize(match.good_kp1, match.good_kp2)
vo.minimize_cost(match.good_kp1, match.good_kp2)

print "optF", vo.F
vo.E_from_F()

print "Essential", vo.E

vo.FindEssentialRansac(match.good_kp2, match.good_kp2)

print "Essential2", vo.E
print "mask", vo.maskE