Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import cv2
- import math
- import matplotlib.pyplot as plt
- import requests
- URL = 'https://api.arstand-lab.ru'
- token = 'Token 581314b5dc6db4dd928dc249bf390affbec4df75'
- HEADERS = {'Authorization': token}
- def get_field():
- res = requests.get(f'{URL}/api/0/task/get_task/field_projection',
- headers=HEADERS)
- if res.ok:
- with open('file.npz', 'wb') as f:
- f.write(res.content)
- return True
- else:
- print(res)
- return False
- def post_field(file_path):
- files = {'answer': open(file_path, 'rb')}
- res = requests.post(f'{URL}/api/0/task/check_task/field_projection',
- headers=HEADERS, files=files)
- if res.ok:
- return True
- else:
- print(res)
- return False
- def getPoint(x,y,z,x1,y1,z1):
- t = math.sqrt((x-x1)**2 + (y-y1)**2 + (z-z1)**2)
- l = (x1 - x)/t
- m = (y1 - y)/t
- n = (z1 - z)/t
- return -1*z*l/n, -1*z*m/n, 0
- dst = 's'
- arr = np.empty([3000, 240])
- p = []
- Points = []
- MetaPoints = []
- if __name__ == '__main__':
- loaded = np.load('file.npz')
- x, y, z = loaded["projector"]
- step = 5
- for i in range(len(loaded['xyz_faces'])):
- Points = list()
- for j in range(4):
- kekes = list()
- np.save('example_1', loaded['xyz_faces'][i][j])
- b = np.load('example_1.npy')
- for v in range(len(b)):
- # print(b[v][0], b[v][1], b[v][2])
- x2, y2 = loaded['ij_coords'][i]
- print((x2 * step) + (step/2) + b[v][0], (y2 * step) + (step / 2) + b[v][1], b[v][2])
- print(x,y,z)
- x1, y1, z1 = getPoint(x, y, z, (x2 * step) + (step/2) + b[v][0], (y2 * step) + (step / 2) + b[v][1], b[v][2])
- print(x1,y1,z1)
- b[v] = x1+20, y1+25, z1
- kekes.append(b[v])
- Points.append(kekes)
- MetaPoints.append(Points)
- # print(MetaPoints)
- for i in range(len(MetaPoints)):
- for j in range(4):
- # plt.imshow(loaded["face_img"][i][j])
- # plt.show()
- # loaded["img_coords"][i][j] = [i*60 for i in loaded["img_coords"][i][j]]
- # print([[MetaPoints[i][j][1][0]*60,abs(MetaPoints[i][j][1][1]*60)],
- # [MetaPoints[i][j][2][0]*60,abs(MetaPoints[i][j][2][1]*60)]])
- # (h, w) = loaded["face_img"][i][j].shape[:2]
- pts1 = np.float32(
- [loaded["img_coords"][i][j][0], loaded["img_coords"][i][j][1], loaded["img_coords"][i][j][2]])
- pts2 = np.float32([[MetaPoints[i][j][0][0] * 60, abs(MetaPoints[i][j][0][1] * 60)],
- [MetaPoints[i][j][1][0] * 60, abs(MetaPoints[i][j][1][1] * 60)],
- [MetaPoints[i][j][2][0] * 60, abs(MetaPoints[i][j][2][1] * 60)]])
- M = cv2.getAffineTransform(pts1, pts2)
- if dst == 's':
- dst = cv2.warpAffine(np.array(loaded["face_img"][i][j], dtype='uint8'), M, (2400, 3000))
- else:
- dst += cv2.warpAffine(np.array(loaded["face_img"][i][j], dtype='uint8'), M, (2400, 3000))
- p.append(dst)
- np.savez("field_answer.npz", answer=dst)
- print('POST successful: ', post_field('field_answer.npz'))
- # (h, w) = loaded["face_img"][i][j].shape[:2]
- # pts1 = np.float32([[50,50],[200,50],[50,200]])
- # pts2 = np.float32([[10,100],[200,50],[100,250]])
- # M = cv2.getAffineTransform(pts1,pts2)
- # dst = cv2.warpAffine(np.array(loaded["face_img"][i][j],dtype='uint8'),M,(h,w))
- # PUT YOUR CODE HERE
- # print('POST successful: ', post_faces_projections_npz('/tmp/field_answer.npz'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement