51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
import numpy as np
|
|
import serial
|
|
import struct
|
|
|
|
# Hàm gửi dữ liệu qua cổng serial
|
|
def send_data(data):
|
|
num_rows = data.shape[0]
|
|
num_cols = data.shape[1]
|
|
# Chuyển mảng thành chuỗi byte
|
|
data_bytes = data.tobytes()
|
|
# Đóng gói kích thước và dữ liệu
|
|
header = struct.pack('<II', num_rows, num_cols) # <II cho hai số nguyên không dấu 32-bit
|
|
data_to_send = header + data_bytes
|
|
# Mở cổng serial
|
|
ser = serial.Serial('/dev/ttyUSB0', 115200) # Thay 'COM3' bằng cổng serial của bạn
|
|
# Gửi dữ liệu
|
|
ser.write(data_to_send)
|
|
# Đóng cổng serial
|
|
ser.close()
|
|
print("sending : ",data_to_send)
|
|
|
|
# Hàm scale tọa độ
|
|
def scaled_image(coords, h_new, w_new):
|
|
coords[:, 0] = (coords[:, 0] * w_new).astype(float) # Scale x
|
|
coords[:, 1] = (coords[:, 1] * h_new).astype(float) # Scale y
|
|
return coords
|
|
|
|
# Tạo test case
|
|
def create_test_case(n):
|
|
data = np.random.rand(n, 2).astype(np.float32) # Tạo tọa độ ngẫu nhiên
|
|
return data
|
|
|
|
# Hàm chính để test
|
|
def main():
|
|
for n in range(11): # Test với n từ 0 đến 10
|
|
data = create_test_case(n)
|
|
print(f"Original data (n={n}):")
|
|
print(data)
|
|
|
|
#h_old, w_old = 1080, 1920 # Kích thước ban đầu của ảnh
|
|
h_new, w_new = 64, 64 # Kích thước mới của ảnh
|
|
|
|
scaled_data = scaled_image(data.copy(),h_new, w_new)
|
|
print(f"Scaled data (n={n}):")
|
|
print(scaled_data)
|
|
|
|
# Gửi dữ liệu qua cổng serial
|
|
send_data(scaled_data)
|
|
|
|
if __name__ == "__main__":
|
|
main() |