mirror of
https://github.com/openmv/openmv.git
synced 2025-09-26 23:09:13 +08:00
py_image: Add new depth palette.
This commit is contained in:
parent
f6e0aed109
commit
3e99ef0ceb
@ -28,7 +28,7 @@ while True:
|
||||
hint=image.BILINEAR,
|
||||
scale=(0, 4000),
|
||||
copy_to_fb=True,
|
||||
color_palette=tof.PALETTE_IRONBOW,
|
||||
color_palette=image.PALETTE_DEPTH,
|
||||
)
|
||||
img.flush()
|
||||
except RuntimeError as e:
|
||||
|
@ -41,7 +41,7 @@ while True:
|
||||
hint=image.BILINEAR,
|
||||
alpha=100,
|
||||
scale=(0, 4000),
|
||||
color_palette=tof.PALETTE_RAINBOW,
|
||||
color_palette=image.PALETTE_DEPTH,
|
||||
)
|
||||
|
||||
# Draw min and max distance.
|
||||
|
@ -375,6 +375,7 @@ extern const int8_t lab_table[196608 / 2];
|
||||
typedef enum {
|
||||
COLOR_PALETTE_RAINBOW,
|
||||
COLOR_PALETTE_IRONBOW,
|
||||
COLOR_PALETTE_DEPTH,
|
||||
COLOR_PALETTE_EVT_DARK,
|
||||
COLOR_PALETTE_EVT_LIGHT
|
||||
} color_palette_t;
|
||||
@ -382,6 +383,7 @@ typedef enum {
|
||||
// Color palette LUTs
|
||||
extern const uint16_t rainbow_table[256];
|
||||
extern const uint16_t ironbow_table[256];
|
||||
extern const uint16_t depth_table[256];
|
||||
extern const uint16_t evt_dark_table[256];
|
||||
extern const uint16_t evt_light_table[256];
|
||||
|
||||
|
@ -1,4 +1,38 @@
|
||||
#include <stdint.h>
|
||||
const uint16_t depth_table[256] = {
|
||||
0xF820, 0xF840, 0xF840, 0xF860, 0xF880, 0xF8A0, 0xF8C0, 0xF8C0,
|
||||
0xF8E0, 0xF900, 0xF920, 0xF940, 0xF940, 0xF960, 0xF980, 0xF9A0,
|
||||
0xF9A0, 0xF9C0, 0xF9E0, 0xFA00, 0xFA20, 0xFA20, 0xFA40, 0xFA60,
|
||||
0xFA80, 0xFAA0, 0xFAA0, 0xFAC0, 0xFAE0, 0xFB00, 0xFB20, 0xFB20,
|
||||
0xFB40, 0xFB60, 0xFB80, 0xFBA0, 0xFBA0, 0xFBC0, 0xFBE0, 0xFC00,
|
||||
0xFC20, 0xFC20, 0xFC40, 0xFC60, 0xFC80, 0xFCA0, 0xFCA0, 0xFCC0,
|
||||
0xFCE0, 0xFD00, 0xFD00, 0xFD20, 0xFD40, 0xFD60, 0xFD80, 0xFD80,
|
||||
0xFDA0, 0xFDC0, 0xFDE0, 0xFE00, 0xFE00, 0xFE20, 0xFE40, 0xFE60,
|
||||
0xFE80, 0xFE80, 0xFEA0, 0xFEC0, 0xFEE0, 0xFF00, 0xFF00, 0xFF20,
|
||||
0xFF40, 0xFF60, 0xFF80, 0xFF80, 0xFFA0, 0xFFC0, 0xFFE0, 0xFFE0,
|
||||
0xF7E0, 0xF7E0, 0xF7E0, 0xEFE0, 0xEFE0, 0xE7E0, 0xE7E0, 0xE7E0,
|
||||
0xDFE0, 0xDFE0, 0xD7E0, 0xD7E0, 0xD7E0, 0xCFE0, 0xCFE0, 0xC7E0,
|
||||
0xC7E0, 0xC7E0, 0xBFE0, 0xBFE0, 0xBFE0, 0xB7E0, 0xB7E0, 0xAFE0,
|
||||
0xAFE0, 0xAFE0, 0xA7E0, 0xA7E0, 0x9FE0, 0x9FE0, 0x9FE0, 0x97E0,
|
||||
0x97E0, 0x8FE0, 0x8FE0, 0x8FE0, 0x87E0, 0x87E0, 0x87E0, 0x7FE0,
|
||||
0x7FE0, 0x77E0, 0x77E0, 0x77E0, 0x6FE0, 0x6FE0, 0x67E0, 0x67E0,
|
||||
0x67E0, 0x5FE0, 0x5FE0, 0x57E0, 0x57E0, 0x57E0, 0x4FE0, 0x4FE0,
|
||||
0x47E0, 0x47E0, 0x47E0, 0x3FE0, 0x3FE0, 0x3FE0, 0x37E0, 0x37E0,
|
||||
0x2FE0, 0x2FE0, 0x2FE0, 0x27E0, 0x27E0, 0x1FE0, 0x1FE0, 0x1FE0,
|
||||
0x17E0, 0x17E0, 0x0FE0, 0x0FE0, 0x0FE0, 0x07E0, 0x07E0, 0x07E1,
|
||||
0x07E1, 0x07E1, 0x07E2, 0x07E2, 0x07E2, 0x07E3, 0x07E3, 0x07E4,
|
||||
0x07E4, 0x07E4, 0x07E5, 0x07E5, 0x07E6, 0x07E6, 0x07E6, 0x07E7,
|
||||
0x07E7, 0x07E8, 0x07E8, 0x07E8, 0x07E9, 0x07E9, 0x07EA, 0x07EA,
|
||||
0x07EA, 0x07EB, 0x07EB, 0x07EB, 0x07EC, 0x07EC, 0x07ED, 0x07ED,
|
||||
0x07ED, 0x07EE, 0x07EE, 0x07EF, 0x07EF, 0x07EF, 0x07F0, 0x07F0,
|
||||
0x07F1, 0x07F1, 0x07F1, 0x07F2, 0x07F2, 0x07F2, 0x07F3, 0x07F3,
|
||||
0x07F4, 0x07F4, 0x07F4, 0x07F5, 0x07F5, 0x07F6, 0x07F6, 0x07F6,
|
||||
0x07F7, 0x07F7, 0x07F8, 0x07F8, 0x07F8, 0x07F9, 0x07F9, 0x07FA,
|
||||
0x07FA, 0x07FA, 0x07FB, 0x07FB, 0x07FB, 0x07FC, 0x07FC, 0x07FD,
|
||||
0x07FD, 0x07FD, 0x07FE, 0x07FE, 0x07FF, 0x07FF, 0x07DF, 0x07BF,
|
||||
0x07BF, 0x079F, 0x077F, 0x075F, 0x073F, 0x073F, 0x071F, 0x06FF,
|
||||
0x06DF, 0x06BF, 0x06BF, 0x069F, 0x067F, 0x065F, 0x063F, 0x063F
|
||||
};
|
||||
const uint16_t rainbow_table[256] = {
|
||||
0x063F, 0x063F, 0x065F, 0x067F, 0x069F, 0x06BF, 0x06BF, 0x06DF,
|
||||
0x06FF, 0x071F, 0x073F, 0x073F, 0x075F, 0x077F, 0x079F, 0x07BF,
|
||||
|
@ -1038,6 +1038,11 @@ static mp_obj_t py_omv_csi_set_color_palette(mp_obj_t palette_obj) {
|
||||
case COLOR_PALETTE_IRONBOW:
|
||||
omv_csi_set_color_palette(ironbow_table);
|
||||
break;
|
||||
#if (MICROPY_PY_TOF == 1)
|
||||
case COLOR_PALETTE_DEPTH:
|
||||
omv_csi_set_color_palette(depth_table);
|
||||
break;
|
||||
#endif // MICROPY_PY_TOF == 1
|
||||
#if (OMV_GENX320_ENABLE == 1)
|
||||
case COLOR_PALETTE_EVT_DARK:
|
||||
omv_csi_set_color_palette(evt_dark_table);
|
||||
@ -1060,6 +1065,10 @@ static mp_obj_t py_omv_csi_get_color_palette() {
|
||||
return mp_obj_new_int(COLOR_PALETTE_RAINBOW);
|
||||
} else if (palette == ironbow_table) {
|
||||
return mp_obj_new_int(COLOR_PALETTE_IRONBOW);
|
||||
#if (MICROPY_PY_TOF == 1)
|
||||
} else if (palette == depth_table) {
|
||||
return mp_obj_new_int(COLOR_PALETTE_DEPTH);
|
||||
#endif // MICROPY_PY_TOF == 1
|
||||
#if (OMV_GENX320_ENABLE == 1)
|
||||
} else if (palette == evt_dark_table) {
|
||||
return mp_obj_new_int(COLOR_PALETTE_EVT_DARK);
|
||||
|
@ -78,6 +78,10 @@ const void *py_helper_arg_to_palette(const mp_obj_t arg, uint32_t pixfmt) {
|
||||
palette = rainbow_table;
|
||||
} else if (type == COLOR_PALETTE_IRONBOW) {
|
||||
palette = ironbow_table;
|
||||
#if (MICROPY_PY_TOF == 1)
|
||||
} else if (type == COLOR_PALETTE_DEPTH) {
|
||||
palette = depth_table;
|
||||
#endif // MICROPY_PY_TOF == 1
|
||||
#if (OMV_GENX320_ENABLE == 1)
|
||||
} else if (type == COLOR_PALETTE_EVT_DARK) {
|
||||
palette = evt_dark_table;
|
||||
@ -484,6 +488,10 @@ const uint16_t *py_helper_keyword_color_palette(uint n_args, const mp_obj_t *arg
|
||||
default_color_palette = rainbow_table;
|
||||
} else if (palette == COLOR_PALETTE_IRONBOW) {
|
||||
default_color_palette = ironbow_table;
|
||||
#if (MICROPY_PY_TOF == 1)
|
||||
} else if (palette == COLOR_PALETTE_DEPTH) {
|
||||
default_color_palette = depth_table;
|
||||
#endif // MICROPY_PY_TOF == 1
|
||||
#if (OMV_GENX320_ENABLE == 1)
|
||||
} else if (palette == COLOR_PALETTE_EVT_DARK) {
|
||||
default_color_palette = evt_dark_table;
|
||||
|
@ -1210,6 +1210,13 @@ static mp_obj_t py_image_to_ironbow(uint n_args, const mp_obj_t *args, mp_map_t
|
||||
}
|
||||
static MP_DEFINE_CONST_FUN_OBJ_KW(py_image_to_ironbow_obj, 1, py_image_to_ironbow);
|
||||
|
||||
#if (MICROPY_PY_TOF == 1)
|
||||
static mp_obj_t py_image_to_depth(uint n_args, const mp_obj_t *args, mp_map_t *kw_args) {
|
||||
return py_image_to(PIXFORMAT_RGB565, MP_ROM_INT(COLOR_PALETTE_DEPTH), false, n_args, args, kw_args);
|
||||
}
|
||||
static MP_DEFINE_CONST_FUN_OBJ_KW(py_image_to_depth_obj, 1, py_image_to_depth);
|
||||
#endif // MICROPY_PY_TOF == 1
|
||||
|
||||
#if (OMV_GENX320_ENABLE == 1)
|
||||
static mp_obj_t py_image_to_evt_dark(uint n_args, const mp_obj_t *args, mp_map_t *kw_args) {
|
||||
return py_image_to(PIXFORMAT_RGB565, MP_ROM_INT(COLOR_PALETTE_EVT_DARK), false, n_args, args, kw_args);
|
||||
@ -6245,6 +6252,9 @@ static const mp_rom_map_elem_t locals_dict_table[] = {
|
||||
{MP_ROM_QSTR(MP_QSTR_to_rgb565), MP_ROM_PTR(&py_image_to_rgb565_obj)},
|
||||
{MP_ROM_QSTR(MP_QSTR_to_rainbow), MP_ROM_PTR(&py_image_to_rainbow_obj)},
|
||||
{MP_ROM_QSTR(MP_QSTR_to_ironbow), MP_ROM_PTR(&py_image_to_ironbow_obj)},
|
||||
#if (MICROPY_PY_TOF == 1)
|
||||
{MP_ROM_QSTR(MP_QSTR_to_depth), MP_ROM_PTR(&py_image_to_depth_obj)},
|
||||
#endif // MICROPY_PY_TOF == 1
|
||||
#if (OMV_GENX320_ENABLE == 1)
|
||||
{MP_ROM_QSTR(MP_QSTR_to_evt_dark), MP_ROM_PTR(&py_image_to_evt_dark_obj)},
|
||||
{MP_ROM_QSTR(MP_QSTR_to_evt_light), MP_ROM_PTR(&py_image_to_evt_light_obj)},
|
||||
@ -7058,6 +7068,9 @@ static const mp_rom_map_elem_t globals_dict_table[] = {
|
||||
{MP_ROM_QSTR(MP_QSTR_PNG), MP_ROM_INT(PIXFORMAT_PNG)}, /* PNG/COMPRESSED*/
|
||||
{MP_ROM_QSTR(MP_QSTR_PALETTE_RAINBOW), MP_ROM_INT(COLOR_PALETTE_RAINBOW)},
|
||||
{MP_ROM_QSTR(MP_QSTR_PALETTE_IRONBOW), MP_ROM_INT(COLOR_PALETTE_IRONBOW)},
|
||||
#if (MICROPY_PY_TOF == 1)
|
||||
{MP_ROM_QSTR(MP_QSTR_PALETTE_DEPTH), MP_ROM_INT(COLOR_PALETTE_DEPTH)},
|
||||
#endif // MICROPY_PY_TOF == 1
|
||||
#if (OMV_GENX320_ENABLE == 1)
|
||||
{MP_ROM_QSTR(MP_QSTR_PALETTE_EVT_DARK), MP_ROM_INT(COLOR_PALETTE_EVT_DARK)},
|
||||
{MP_ROM_QSTR(MP_QSTR_PALETTE_EVT_LIGHT), MP_ROM_INT(COLOR_PALETTE_EVT_LIGHT)},
|
||||
|
@ -404,7 +404,7 @@ mp_obj_t py_tof_draw_depth(uint n_args, const mp_obj_t *pos_args, mp_map_t *kw_a
|
||||
{ MP_QSTR_roi, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_rom_obj = MP_ROM_NONE} },
|
||||
{ MP_QSTR_rgb_channel, MP_ARG_INT | MP_ARG_KW_ONLY, {.u_int = -1 } },
|
||||
{ MP_QSTR_alpha, MP_ARG_INT | MP_ARG_KW_ONLY, {.u_int = 256 } },
|
||||
{ MP_QSTR_color_palette, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_rom_obj = MP_ROM_INT(COLOR_PALETTE_RAINBOW)} },
|
||||
{ MP_QSTR_color_palette, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_rom_obj = MP_ROM_INT(COLOR_PALETTE_DEPTH)} },
|
||||
{ MP_QSTR_alpha_palette, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_rom_obj = MP_ROM_NONE} },
|
||||
{ MP_QSTR_hint, MP_ARG_INT | MP_ARG_KW_ONLY, {.u_int = 0 } },
|
||||
{ MP_QSTR_scale, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_rom_obj = MP_ROM_NONE} },
|
||||
@ -480,7 +480,7 @@ mp_obj_t py_tof_snapshot(uint n_args, const mp_obj_t *pos_args, mp_map_t *kw_arg
|
||||
{ MP_QSTR_roi, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_rom_obj = MP_ROM_NONE} },
|
||||
{ MP_QSTR_rgb_channel, MP_ARG_INT | MP_ARG_KW_ONLY, {.u_int = -1 } },
|
||||
{ MP_QSTR_alpha, MP_ARG_INT | MP_ARG_KW_ONLY, {.u_int = 256 } },
|
||||
{ MP_QSTR_color_palette, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_rom_obj = MP_ROM_INT(COLOR_PALETTE_RAINBOW)} },
|
||||
{ MP_QSTR_color_palette, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_rom_obj = MP_ROM_INT(COLOR_PALETTE_DEPTH)} },
|
||||
{ MP_QSTR_alpha_palette, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_rom_obj = MP_ROM_NONE} },
|
||||
{ MP_QSTR_hint, MP_ARG_INT | MP_ARG_KW_ONLY, {.u_int = 0 } },
|
||||
{ MP_QSTR_scale, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_rom_obj = MP_ROM_NONE} },
|
||||
@ -578,10 +578,6 @@ static const mp_rom_map_elem_t globals_dict_table[] = {
|
||||
#if (OMV_TOF_VL53L5CX_ENABLE == 1)
|
||||
{ MP_ROM_QSTR(MP_QSTR_TOF_VL53L5CX), MP_ROM_INT(TOF_VL53L5CX) },
|
||||
#endif
|
||||
{ MP_ROM_QSTR(MP_QSTR_PALETTE_RAINBOW), MP_ROM_INT(COLOR_PALETTE_RAINBOW) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_PALETTE_IRONBOW), MP_ROM_INT(COLOR_PALETTE_IRONBOW) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_GRAYSCALE), MP_ROM_INT(PIXFORMAT_GRAYSCALE) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RGB565), MP_ROM_INT(PIXFORMAT_RGB565) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_init), MP_ROM_PTR(&py_tof_init_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_reset), MP_ROM_PTR(&py_tof_init_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&py_tof_deinit_obj) },
|
||||
|
@ -48,6 +48,18 @@ col = [(int((((r*255)*31)+127.5)/255)&0x1F)<<11 |
|
||||
(int((((g*255)*63)+127.5)/255)&0x3F)<<5 |
|
||||
(int((((b*255)*31)+127.5)/255)&0x1F) for r,g,b in tup]
|
||||
|
||||
sys.stdout.write("const uint16_t depth_table[%d] = {\n" % NUM_COL)
|
||||
for i in range(NUM_COL):
|
||||
if not (i % 8):
|
||||
sys.stdout.write(" ")
|
||||
sys.stdout.write("0x%04X" % col[255-i])
|
||||
if (i + 1) % 8:
|
||||
sys.stdout.write(", ")
|
||||
elif i != (NUM_COL-1):
|
||||
sys.stdout.write(",\n")
|
||||
else:
|
||||
sys.stdout.write("\n};\n")
|
||||
|
||||
sys.stdout.write("const uint16_t rainbow_table[%d] = {\n" % NUM_COL)
|
||||
for i in range(NUM_COL):
|
||||
if not (i % 8):
|
||||
|
Loading…
Reference in New Issue
Block a user