-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathinfer.py
61 lines (49 loc) · 2.16 KB
/
infer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# from classes.Frame.frame import Frame, IMAGE, MODEL_BLOCKS, MODEL_TABLE
# from CONSTANTES import LOGS
# from classes.Objects.object import Objects
# # Infer // todo: fix this infers, move constantes
# table_frames = Frame.infer_frames(IMAGE, MODEL_TABLE, 'table')
# blocks_frames = Frame.infer_frames(IMAGE, MODEL_BLOCKS, 'blocks')
# reason_pixels_mm = Frame.get_proportionality()
# Frame.draw_frames(blocks_frames, table_frames[0], True, IMAGE, 'name.png', reason_pixels_mm['average'])
# #plot items on robodk
# for frame in blocks_frames:
# coords = Frame.get_coords(table_frames[0], frame, reason_pixels_mm['average'])
# print(f"{LOGS['CONNECT']} {coords}")
# Objects().insert(coords=[coords['x_mm'], coords['y_mm']])
# abra a camera
# tire uma foto
# salve a foto
# chame a inferencia passando a imagem
# pegue as coordenadas
# converta as coordenadas para mm
# logue as coordenadas
from CONSTANTES import LOGS
from classes.Cam.cam import CameraApp
from classes.Network.client import Client
from classes.frame.frame import Frame, IMAGE, MODEL_BLOCKS, MODEL_TABLE
cam = CameraApp()
cam.capture_snapshot()
cam.close()
table_frames = Frame.infer_frames(IMAGE, MODEL_TABLE, 'table')
blocks_frames = Frame.infer_frames(IMAGE, MODEL_BLOCKS, 'blocks')
reason_pixels_mm = Frame.get_proportionality()
Frame.draw_frames(blocks_frames, table_frames[0], True, IMAGE, 'result.png', reason_pixels_mm['average'])
blocks = []
for frame in blocks_frames:
coords = Frame.get_coords(table_frames[0], frame, reason_pixels_mm['average'])
# validar se nao é a origem
# validar se nao está fora da mesa branca
if(coords['x_mm'] == 0 and coords['y_mm'] == 0):
continue
if(coords['x_mm'] > 300 or coords['y_mm'] > 300 or coords['x_mm'] < -300 or coords['y_mm'] < -300):
continue
blocks.append(coords)
for block in blocks:
print(f"{LOGS['CONNECT']} {block}")
socket_client = Client()
socket_client.connect_to_server()
valor = block['y_mm'] # Substituir isso pela manipulação adequada se for uma série
message = f"GX{round(block['x_mm'])}Y{round(block['y_mm'])}E"
print(message)
socket_client.send_message(message)