From 11d73c5960f3c12d730145bdd1b1b9e2e0c552d5 Mon Sep 17 00:00:00 2001 From: Willem Melching Date: Mon, 25 Jul 2022 16:20:52 +0200 Subject: [PATCH] map_renderer.py, output monochrome images (#25272) * map renderer, output monochrome images * pass token/url as argument * greyscale old-commit-hash: f72c988415a2a1c4299df67cb8e02eee20e5ba77 --- selfdrive/navd/map_renderer.cc | 17 +++++++++++------ selfdrive/navd/map_renderer.py | 12 ++++++------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/selfdrive/navd/map_renderer.cc b/selfdrive/navd/map_renderer.cc index cb24f2087e..d0770cfb48 100644 --- a/selfdrive/navd/map_renderer.cc +++ b/selfdrive/navd/map_renderer.cc @@ -153,10 +153,15 @@ void MapRenderer::sendVipc() { uint8_t* MapRenderer::getImage() { QImage cap = fbo->toImage().convertToFormat(QImage::Format_RGB888, Qt::AutoColor); - uint8_t* buf = new uint8_t[cap.sizeInBytes()]; - memcpy(buf, cap.bits(), cap.sizeInBytes()); - return buf; + uint8_t* src = cap.bits(); + uint8_t* dst = new uint8_t[WIDTH * HEIGHT]; + + for (int i = 0; i < WIDTH * HEIGHT; i++) { + dst[i] = src[i * 3]; + } + + return dst; } void MapRenderer::updateRoute(QList coordinates) { @@ -189,7 +194,7 @@ MapRenderer::~MapRenderer() { } extern "C" { - MapRenderer* map_renderer_init() { + MapRenderer* map_renderer_init(char *maps_host = nullptr, char *token = nullptr) { char *argv[] = { (char*)"navd", nullptr @@ -199,8 +204,8 @@ extern "C" { assert(app); QMapboxGLSettings settings; - settings.setApiBaseUrl(MAPS_HOST); - settings.setAccessToken(get_mapbox_token()); + settings.setApiBaseUrl(maps_host == nullptr ? MAPS_HOST : maps_host); + settings.setAccessToken(token == nullptr ? get_mapbox_token() : token); return new MapRenderer(settings, false); } diff --git a/selfdrive/navd/map_renderer.py b/selfdrive/navd/map_renderer.py index dc39f335c7..9000622928 100755 --- a/selfdrive/navd/map_renderer.py +++ b/selfdrive/navd/map_renderer.py @@ -3,6 +3,7 @@ import os import time +import numpy as np from cffi import FFI from common.ffi_wrapper import suffix @@ -16,7 +17,7 @@ def get_ffi(): ffi = FFI() ffi.cdef(""" -void* map_renderer_init(); +void* map_renderer_init(char *maps_host, char *token); void map_renderer_update_position(void *inst, float lat, float lon, float bearing); void map_renderer_update_route(void *inst, char *polyline); void map_renderer_update(void *inst); @@ -40,20 +41,19 @@ def wait_ready(lib, renderer): def get_image(lib, renderer): buf = lib.map_renderer_get_image(renderer) - r = list(buf[0:3 * WIDTH * HEIGHT]) + r = list(buf[0:WIDTH * HEIGHT]) lib.map_renderer_free_image(renderer, buf) # Convert to numpy r = np.asarray(r) - return r.reshape((WIDTH, HEIGHT, 3)) + return r.reshape((WIDTH, HEIGHT)) if __name__ == "__main__": import matplotlib.pyplot as plt - import numpy as np ffi, lib = get_ffi() - renderer = lib.map_renderer_init() + renderer = lib.map_renderer_init(ffi.NULL, ffi.NULL) wait_ready(lib, renderer) geometry = r"{yxk}@|obn~Eg@@eCFqc@J{RFw@?kA@gA?q|@Riu@NuJBgi@ZqVNcRBaPBkG@iSD{I@_H@cH?gG@mG@gG?aD@{LDgDDkVVyQLiGDgX@q_@@qI@qKhS{R~[}NtYaDbGoIvLwNfP_b@|f@oFnF_JxHel@bf@{JlIuxAlpAkNnLmZrWqFhFoh@jd@kX|TkJxH_RnPy^|[uKtHoZ~Um`DlkCorC``CuShQogCtwB_ThQcr@fk@sVrWgRhVmSb\\oj@jxA{Qvg@u]tbAyHzSos@xjBeKbWszAbgEc~@~jCuTrl@cYfo@mRn\\_m@v}@ij@jp@om@lk@y|A`pAiXbVmWzUod@xj@wNlTw}@|uAwSn\\kRfYqOdS_IdJuK`KmKvJoOhLuLbHaMzGwO~GoOzFiSrEsOhD}PhCqw@vJmnAxSczA`Vyb@bHk[fFgl@pJeoDdl@}}@zIyr@hG}X`BmUdBcM^aRR}Oe@iZc@mR_@{FScHxAn_@vz@zCzH~GjPxAhDlB~DhEdJlIbMhFfG|F~GlHrGjNjItLnGvQ~EhLnBfOn@p`@AzAAvn@CfC?fc@`@lUrArStCfSxEtSzGxM|ElFlBrOzJlEbDnC~BfDtCnHjHlLvMdTnZzHpObOf^pKla@~G|a@dErg@rCbj@zArYlj@ttJ~AfZh@r]LzYg@`TkDbj@gIdv@oE|i@kKzhA{CdNsEfOiGlPsEvMiDpLgBpHyB`MkB|MmArPg@|N?|P^rUvFz~AWpOCdAkB|PuB`KeFfHkCfGy@tAqC~AsBPkDs@uAiAcJwMe@s@eKkPMoXQux@EuuCoH?eI?Kas@}Dy@wAUkMOgDL" @@ -73,6 +73,6 @@ if __name__ == "__main__": print(f"{pos} took {time.time() - t:.2f} s") plt.subplot(2, 2, i + 1) - plt.imshow(get_image(lib, renderer)) + plt.imshow(get_image(lib, renderer), cmap='gray') plt.show()