У меня есть текстовый файл, в котором
x1,y1,z1,w1,desc1
x2,y2,z2,w2,desc2
till
xn,yn,zn,wn,descn
x, y, z и w являются числами с плавающей запятой, c - 61 число с плавающей запятой (не массив или список! Рисунок на картинке только для иллюстрации)
Мне нужно применить уравнение, указанное ниже на картинке Необходимо применить уравнение и получить результат (u1 и v1 соответствуют desc1)
Мой код:
for i in range(len(Xsnew)):
#Xsnew is all the x's in the txt file
x_features = Xsnew[i]
y_features = Ysnew[i]
z_features = Zsnew[i]
#print("x_features", x_features)
# Feature coordinates is the 3x1 matrix x1 y1 z1 in the picture
feature_coordinates = np.array([[x_features],[y_features],[z_features],[1]], dtype=float)
# P in the picture is the projection matrix
position_of_features = np.dot(projection_matrix, feature_coordinates)
u, v, w = position_of_features[0], position_of_features[1], position_of_features[2]
u_normalized = u / w
v_normalized = v / w
#print("U normalized is {} and V normalized is {}". format(u_normalized,v_normalized))
virtual_camera_desc = desc_features[i]
#print("virtual_camera_desc", virtual_camera_desc)
#print(" u = {} and v = {} and X_features = {} and desc = {}". format(u_normalized,v_normalized,x_features,virtual_camera_desc))
if 0 < u_normalized < image_height and 0 < v_normalized < image_width:
#print(len(desc), len(virtual_camera_desc))
#print("I SEE FEATURES")
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck= True)
matches = bf.match(desc, virtual_camera_desc)
Это сработало нормально, но так медленно. Мне нужно, чтобы алгоритм быстрее думал как-нибудь сделать "вживую". Но не знаете, с чего начать? Любой совет, пожалуйста?
Спасибо :)