diff --git a/tools/pyopenmv.py b/tools/pyopenmv.py deleted file mode 100755 index 328aacc3d..000000000 --- a/tools/pyopenmv.py +++ /dev/null @@ -1,305 +0,0 @@ -#!/usr/bin/env python -# This file is part of the OpenMV project. -# -# Copyright (c) 2013-2021 Ibrahim Abdelkader -# Copyright (c) 2013-2021 Kwabena W. Agyeman -# -# This work is licensed under the MIT license, see the file LICENSE for details. -# -# Openmv module. - -import struct -import sys,time -import serial -import platform -import numpy as np -from PIL import Image - -__serial = None -__FB_HDR_SIZE = 12 - -# USB Debug commands -__USBDBG_CMD = 48 -__USBDBG_FW_VERSION = 0x80 -__USBDBG_FRAME_SIZE = 0x81 -__USBDBG_FRAME_DUMP = 0x82 -__USBDBG_ARCH_STR = 0x83 -__USBDBG_SCRIPT_EXEC = 0x05 -__USBDBG_SCRIPT_STOP = 0x06 -__USBDBG_SCRIPT_SAVE = 0x07 -__USBDBG_SCRIPT_RUNNING = 0x87 -__USBDBG_TEMPLATE_SAVE = 0x08 -__USBDBG_DESCRIPTOR_SAVE= 0x09 -__USBDBG_ATTR_READ = 0x8A -__USBDBG_ATTR_WRITE = 0x0B -__USBDBG_SYS_RESET = 0x0C -__USBDBG_SYS_RESET_TO_BL= 0x0E -__USBDBG_FB_ENABLE = 0x0D -__USBDBG_TX_BUF_LEN = 0x8E -__USBDBG_TX_BUF = 0x8F -__USBDBG_GET_STATE = 0x93 -__USBDBG_PROFILE_SIZE = 0x94 -__USBDBG_PROFILE_DUMP = 0x95 -__USBDBG_PROFILE_MODE = 0x16 -__USBDBG_PROFILE_EVENT = 0x17 -__USBDBG_PROFILE_RESET = 0x18 - -__USBDBG_FLAG_SCRIPT_RUNNING = (1 << 0) -__USBDBG_FLAG_TEXTBUF_NOTEMPTY = (1 << 1) -__USBDBG_FLAG_FRAMEBUF_LOCKED = (1 << 2) -__USBDBG_FLAG_PROFILE_ENABLED = (1 << 3) -__USBDBG_FLAG_PROFILE_HAS_PMU = (1 << 4) - -ATTR_CONTRAST = 0 -ATTR_BRIGHTNESS = 1 -ATTR_SATURATION = 2 -ATTR_GAINCEILING = 3 - -__BOOTLDR_START = 0xABCD0001 -__BOOTLDR_RESET = 0xABCD0002 -__BOOTLDR_ERASE = 0xABCD0004 -__BOOTLDR_WRITE = 0xABCD0008 - -def init(port, baudrate=921600, timeout=0.3): - global __serial - # open CDC port - __serial = serial.Serial(port, baudrate=baudrate, timeout=timeout) - -def disconnect(): - global __serial - try: - if (__serial): - __serial.close() - __serial = None - except: - pass - -def write_pack(fmt, *values): - __serial.write(struct.pack(fmt, *values)) - -def read_unpack(fmt): - return struct.unpack(fmt, __serial.read(struct.calcsize(fmt))) - -def set_timeout(timeout): - __serial.timeout = timeout - -def fb_size(): - # read fb header - write_pack(" 2 else (w * h * size) - - # read fb data - write_pack(">11)*255.0/31.0).astype(np.uint8) - g = (((arr & 0x07E0) >>5) *255.0/63.0).astype(np.uint8) - b = (((arr & 0x001F) >>0) *255.0/31.0).astype(np.uint8) - buff = np.column_stack((r,g,b)) - else: # JPEG - fmt = "JPEG" - try: - buff = np.asarray(Image.frombuffer("RGB", (w, h), buff, "jpeg", "RGB", "")) - except Exception as e: - raise ValueError(f"JPEG decode error (%e)") - - if (buff.size != (w*h*3)): - raise ValueError(f"Unexpected frame size. Expected: {w*h*3} received: {buff.size}") - - return w, h, buff.reshape((h, w, 3)), num_bytes, text, fmt, profile - - -def fb_dump(): - size = fb_size() - - if (not size[0]): - # frame not ready - return None - - if (size[2] > 2): #JPEG - num_bytes = size[2] - else: - num_bytes = size[0]*size[1]*size[2] - - # read fb data - write_pack(">11)*255.0/31.0).astype(np.uint8) - g = (((arr & 0x07E0) >>5) *255.0/63.0).astype(np.uint8) - b = (((arr & 0x001F) >>0) *255.0/31.0).astype(np.uint8) - buff = np.column_stack((r,g,b)) - else: # JPEG - try: - buff = np.asarray(Image.frombuffer("RGB", size[0:2], buff, "jpeg", "RGB", "")) - except Exception as e: - print ("JPEG decode error (%s)"%(e)) - return None - - if (buff.size != (size[0]*size[1]*3)): - return None - - return (size[0], size[1], buff.reshape((size[1], size[0], 3))) - -def read_profile(): - records = [] - - # Read and unpack profiling data size - write_pack(" 0 else [] - }) - - offset += record_size - - return records - -def set_profile_mode(mode): - write_pack("