{"id":87,"date":"2016-05-01T18:58:44","date_gmt":"2016-05-01T18:58:44","guid":{"rendered":"https:\/\/hostadm.lithium.selfhost.de\/?p=87"},"modified":"2025-12-25T23:47:39","modified_gmt":"2025-12-25T23:47:39","slug":"slotcountdigi","status":"publish","type":"post","link":"https:\/\/martin-seewaldt.de\/?p=87","title":{"rendered":"SlotCountDigi (Android)"},"content":{"rendered":"<h3>Gestelltes Problem<\/h3>\n<p>Ich hatte schon eine <a href=\"https:\/\/martin-seewaldt.de\/?p=70\">Slotcar-Rundenz\u00e4hler-App<\/a> gemacht, die per Smartphonekamera Runden z\u00e4hlt. Sie war f\u00fcr eine Faller-AMS Rennbahn, bei der jeder Wagen seine eigene Spur hatte.<br \/>\nDa brauchte man nur eine Bewegungserkennung pro Fahrspur zu machen.<\/p>\n<p>Nun bekam ich eine Carrera-Digital Bahn, bei der die Autos die Spur wechseln k\u00f6nnen. Also wollte ich eine App, die die Fahrzeuge an ihrem \u00c4usseren erkennt.<br \/>\nDa habe ich viele Ans\u00e4tze verfolgt und bin dann letzten Endes bei der Farbmarkierung gelandet (was macht man sonst, wenn zwei gleiche Fahrzeuge gegeneinander antreten?).<\/p>\n<p>Aufkleber ausgedruckt und auf die Fahrzeuge geklebt:<br \/>\n<img decoding=\"async\" src=\"https:\/\/martin-seewaldt.de\/Android\/slotcountdigi_tutorial\/de\/labeled_cars.jpg\" \/><\/p>\n<p>Und das Smartphone dann mit einem Selfiestick oberhalb der Schiene fixiert:<br \/>\n<img decoding=\"async\" src=\"https:\/\/martin-seewaldt.de\/Android\/slotcountdigi_tutorial\/de\/IMG_7629.JPG\" \/><\/p>\n<h3>Programm<\/h3>\n<p>Was ich durch die Aufkleber erreichen wollte, war dass die Autos sich farblich unterscheiden. Ich wollte aber keine App, wo man eingibt, wer welche Farbe hat. Das w\u00e4re irgendwie unsportlich\/zu einfach gewesen. Die App sollte selbst herausfinden, welche Farbe ein Auto hat, auch ohne zu wissen, welche Aufkleberfarben \u00fcberhaupt verwendet werden.<\/p>\n<p>Daf\u00fcr habe ich einen Kalibrierungsmodus gemacht. Man f\u00e4hrt die Autos nacheinander ins Blickfeld der Kamera und bleibt dann stehen.<br \/>\nDie App registriert live die Einfahrt (sagt &#8220;Auto rein&#8221;) und ermittelt den Ort an dem das Auto zum Stehen kommt (sagt &#8220;Auto erkannt&#8221;).<br \/>\nDann schneidet sie das Bild des Autos aus, sp\u00e4ter im Rennen wird das Bild benutzt um das Auto in Listen darzustellen. Gleichzeitig wird das ausgeschnittene Bild auf die dominierende Farbe gepr\u00fcft.<br \/>\nAch, es war nett, das zu Programmieren, im Prinzip hab&#8217; ich da eine Liste von Farbeimern gemacht, wo dann die Pixel des Bildes abgelegt werden und der vollste Eimer ist am Ende die dominierende Farbe. Diese Farbe ist die, nach der sp\u00e4ter im Rennen live im Kamerabild gesucht wird, um zu pr\u00fcfen ob das Fahrzeug durchf\u00e4hrt.<\/p>\n<p>Hier mal ein Beispiel, Fahrzeugkalibrierung f\u00fcr drei Fahrzeuge, ein gelbes, ein blaues und ein magentaes:<br \/>\n<a href=\"https:\/\/www.youtube.com\/watch?v=UXay71XXuxI\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/martin-seewaldt.de\/Android\/slotcountdigi_tutorial\/de\/democalibration.png\" \/><\/a><br \/>\n(Nicht schlecht, oder?)<\/p>\n<p>Hier wird keine Library f\u00fcr Bildverarbeitung verwendet, die App holt sich live Kameraframes und verarbeitet sie in Echtzeit.<\/p>\n<p>Nach dem Kalibrieren kann man dann den Autos die Fahrernamen zuweisen oder falsche Erkennungen l\u00f6schen:<br \/>\n<img decoding=\"async\" src=\"https:\/\/martin-seewaldt.de\/Android\/slotcountdigi_tutorial\/de\/car_list.jpg\" \/><\/p>\n<p>Nach der Kalibrierung kann SlotCountDigi die Fahrzeuge erkennen.<br \/>\nEs werden Runden gez\u00e4hlt (Im Video sieht man das jeweils aktuelle Klassement)<br \/>\nund Rundenzeiten ermittelt.<\/p>\n<p>Kleines Rennen:<br \/>\n<a href=\"https:\/\/www.youtube.com\/watch?v=mestzgMi93Q\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/martin-seewaldt.de\/Android\/slotcountdigi_tutorial\/de\/demorace.png\" \/><\/a><\/p>\n<p>Man muss hier noch anmerken, dass die App nicht einfach im Kamerabild nach den Aufkleberfarben sucht (dann w\u00fcrden die im Bild ausgelegten Aufkleber ja auch st\u00f6ren). Es wird zun\u00e4chst nach bewegten Fahrzeugen gesucht und dann erst pro Fahrzeugbild nach den Farben.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gestelltes Problem Ich hatte schon eine Slotcar-Rundenz\u00e4hler-App gemacht, die per Smartphonekamera Runden z\u00e4hlt. Sie war f\u00fcr eine Faller-AMS Rennbahn, bei der jeder Wagen seine eigene Spur hatte. Da brauchte man nur eine Bewegungserkennung pro Fahrspur zu machen. Nun bekam ich eine Carrera-Digital Bahn, bei der die Autos die Spur wechseln k\u00f6nnen. Also wollte ich eine [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[3],"tags":[],"class_list":["post-87","post","type-post","status-publish","format-standard","hentry","category-programme_apps"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>SlotCountDigi (Android) - Martin Seewaldt<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/martin-seewaldt.de\/?p=87\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SlotCountDigi (Android) - Martin Seewaldt\" \/>\n<meta property=\"og:description\" content=\"Gestelltes Problem Ich hatte schon eine Slotcar-Rundenz\u00e4hler-App gemacht, die per Smartphonekamera Runden z\u00e4hlt. Sie war f\u00fcr eine Faller-AMS Rennbahn, bei der jeder Wagen seine eigene Spur hatte. Da brauchte man nur eine Bewegungserkennung pro Fahrspur zu machen. Nun bekam ich eine Carrera-Digital Bahn, bei der die Autos die Spur wechseln k\u00f6nnen. Also wollte ich eine [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/martin-seewaldt.de\/?p=87\" \/>\n<meta property=\"og:site_name\" content=\"Martin Seewaldt\" \/>\n<meta property=\"article:published_time\" content=\"2016-05-01T18:58:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-25T23:47:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/martin-seewaldt.de\/Android\/slotcountdigi_tutorial\/de\/labeled_cars.jpg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=87#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=87\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/#\\\/schema\\\/person\\\/a1a6571321f54991629bb99be16f5e5f\"},\"headline\":\"SlotCountDigi (Android)\",\"datePublished\":\"2016-05-01T18:58:44+00:00\",\"dateModified\":\"2025-12-25T23:47:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=87\"},\"wordCount\":427,\"commentCount\":2,\"image\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=87#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/martin-seewaldt.de\\\/Android\\\/slotcountdigi_tutorial\\\/de\\\/labeled_cars.jpg\",\"articleSection\":[\"Programme\\\/Apps\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/martin-seewaldt.de\\\/?p=87#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=87\",\"url\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=87\",\"name\":\"SlotCountDigi (Android) - Martin Seewaldt\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=87#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=87#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/martin-seewaldt.de\\\/Android\\\/slotcountdigi_tutorial\\\/de\\\/labeled_cars.jpg\",\"datePublished\":\"2016-05-01T18:58:44+00:00\",\"dateModified\":\"2025-12-25T23:47:39+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/#\\\/schema\\\/person\\\/a1a6571321f54991629bb99be16f5e5f\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=87#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/martin-seewaldt.de\\\/?p=87\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=87#primaryimage\",\"url\":\"https:\\\/\\\/martin-seewaldt.de\\\/Android\\\/slotcountdigi_tutorial\\\/de\\\/labeled_cars.jpg\",\"contentUrl\":\"https:\\\/\\\/martin-seewaldt.de\\\/Android\\\/slotcountdigi_tutorial\\\/de\\\/labeled_cars.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/?p=87#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/martin-seewaldt.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SlotCountDigi (Android)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/#website\",\"url\":\"https:\\\/\\\/martin-seewaldt.de\\\/\",\"name\":\"Martin Seewaldt\",\"description\":\"Einige meiner Projekte\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/martin-seewaldt.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/martin-seewaldt.de\\\/#\\\/schema\\\/person\\\/a1a6571321f54991629bb99be16f5e5f\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c382657803c93429dee7a228c33968728e6adc9a850a0b0488abd4e9c466179?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c382657803c93429dee7a228c33968728e6adc9a850a0b0488abd4e9c466179?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c382657803c93429dee7a228c33968728e6adc9a850a0b0488abd4e9c466179?s=96&d=mm&r=g\",\"caption\":\"admin\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SlotCountDigi (Android) - Martin Seewaldt","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/martin-seewaldt.de\/?p=87","og_locale":"en_US","og_type":"article","og_title":"SlotCountDigi (Android) - Martin Seewaldt","og_description":"Gestelltes Problem Ich hatte schon eine Slotcar-Rundenz\u00e4hler-App gemacht, die per Smartphonekamera Runden z\u00e4hlt. Sie war f\u00fcr eine Faller-AMS Rennbahn, bei der jeder Wagen seine eigene Spur hatte. Da brauchte man nur eine Bewegungserkennung pro Fahrspur zu machen. Nun bekam ich eine Carrera-Digital Bahn, bei der die Autos die Spur wechseln k\u00f6nnen. Also wollte ich eine [&hellip;]","og_url":"https:\/\/martin-seewaldt.de\/?p=87","og_site_name":"Martin Seewaldt","article_published_time":"2016-05-01T18:58:44+00:00","article_modified_time":"2025-12-25T23:47:39+00:00","og_image":[{"url":"https:\/\/martin-seewaldt.de\/Android\/slotcountdigi_tutorial\/de\/labeled_cars.jpg","type":"","width":"","height":""}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/martin-seewaldt.de\/?p=87#article","isPartOf":{"@id":"https:\/\/martin-seewaldt.de\/?p=87"},"author":{"name":"admin","@id":"https:\/\/martin-seewaldt.de\/#\/schema\/person\/a1a6571321f54991629bb99be16f5e5f"},"headline":"SlotCountDigi (Android)","datePublished":"2016-05-01T18:58:44+00:00","dateModified":"2025-12-25T23:47:39+00:00","mainEntityOfPage":{"@id":"https:\/\/martin-seewaldt.de\/?p=87"},"wordCount":427,"commentCount":2,"image":{"@id":"https:\/\/martin-seewaldt.de\/?p=87#primaryimage"},"thumbnailUrl":"https:\/\/martin-seewaldt.de\/Android\/slotcountdigi_tutorial\/de\/labeled_cars.jpg","articleSection":["Programme\/Apps"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/martin-seewaldt.de\/?p=87#respond"]}]},{"@type":"WebPage","@id":"https:\/\/martin-seewaldt.de\/?p=87","url":"https:\/\/martin-seewaldt.de\/?p=87","name":"SlotCountDigi (Android) - Martin Seewaldt","isPartOf":{"@id":"https:\/\/martin-seewaldt.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/martin-seewaldt.de\/?p=87#primaryimage"},"image":{"@id":"https:\/\/martin-seewaldt.de\/?p=87#primaryimage"},"thumbnailUrl":"https:\/\/martin-seewaldt.de\/Android\/slotcountdigi_tutorial\/de\/labeled_cars.jpg","datePublished":"2016-05-01T18:58:44+00:00","dateModified":"2025-12-25T23:47:39+00:00","author":{"@id":"https:\/\/martin-seewaldt.de\/#\/schema\/person\/a1a6571321f54991629bb99be16f5e5f"},"breadcrumb":{"@id":"https:\/\/martin-seewaldt.de\/?p=87#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/martin-seewaldt.de\/?p=87"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/martin-seewaldt.de\/?p=87#primaryimage","url":"https:\/\/martin-seewaldt.de\/Android\/slotcountdigi_tutorial\/de\/labeled_cars.jpg","contentUrl":"https:\/\/martin-seewaldt.de\/Android\/slotcountdigi_tutorial\/de\/labeled_cars.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/martin-seewaldt.de\/?p=87#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/martin-seewaldt.de\/"},{"@type":"ListItem","position":2,"name":"SlotCountDigi (Android)"}]},{"@type":"WebSite","@id":"https:\/\/martin-seewaldt.de\/#website","url":"https:\/\/martin-seewaldt.de\/","name":"Martin Seewaldt","description":"Einige meiner Projekte","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/martin-seewaldt.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/martin-seewaldt.de\/#\/schema\/person\/a1a6571321f54991629bb99be16f5e5f","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/8c382657803c93429dee7a228c33968728e6adc9a850a0b0488abd4e9c466179?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/8c382657803c93429dee7a228c33968728e6adc9a850a0b0488abd4e9c466179?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8c382657803c93429dee7a228c33968728e6adc9a850a0b0488abd4e9c466179?s=96&d=mm&r=g","caption":"admin"}}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=\/wp\/v2\/posts\/87","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=87"}],"version-history":[{"count":24,"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=\/wp\/v2\/posts\/87\/revisions"}],"predecessor-version":[{"id":1094,"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=\/wp\/v2\/posts\/87\/revisions\/1094"}],"wp:attachment":[{"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=87"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=87"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/martin-seewaldt.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=87"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}