3D laserscanner van de omgeving, en wel vanaf nul (4 / 7 stap)

Stap 4: 1e Processing programma


In de eerste Processing Schets we zijn gaan kijken wat de webcam ziet en pak alle rode pixels boven een drempel en ze opslaan op een andere afbeelding als witte pixels. Vervolgens zult wij opgeruimd het een bits en eind omhoog met een dunne witte gestippelde Profiel van het gescande onderwerp. We sla die witte pixel X-en Y-coördinaten naar een tekstbestand samen met de motor hoek bij elk frame.

Nogmaals, u kunt gewoon deel 3 van de video-serie kijken of kijken via de commentaar in de sketch maar ik zal schetsen wat er gaande is hier.

Nogmaals, ik zal overslaan naar de belangrijke stukje (loting lus). We moeten dus eerst af, maken twee beelden die de dezelfde grootte als de webcam feed, 640 x 480. De achtergrond ingesteld op zwart.

Nu moeten we de motor hoek aan de motor hoek naar het tekstbestand, afdrukken, tenzij we het van de Arduino nog niet hebt gelezen? Het is fijn, want we het weten is nul om mee te beginnen, en de volgende keer zal er lezen! Het moet worden gedaan op deze manier om te voorkomen dat een belasting van Chinese tekens naar het tekstbestand schrijven... MAAR voordat we deze hoek schrijven, moeten we vooraf met ';'. Dit is dus het volgende verwerking programma het zich bezighoudt met een nieuw frame van de webcam weet bij het zien van een ';'.

Daarna nodig hebben wij om te controleren om te zien als een nieuw frame van de webcam beschikbaar is, als er dan we het lezen! Dit bespaart een webcam frame op het video-object, en kunnen we afzonderlijke pixelwaarden met behulp van video.pixels[i] waar 'ik' het aantal pixels vanaf de linksboven is langs aan de rechterkant van het scherm en naar beneden. Dus dit begint bij 0 en gaat tot 640 * 480 = 307200.

Hier lezen we van de seriële poort te lezen van de motor hoek van de Arduino. Eerst controleren we om te zien dat als er vier of meer bytes in de buffer seriële, een float is 4 bytes, dus we wachten moeten totdat de hele float is klaar om te lezen. We lezen dan de binnenkomende gegevens totdat we een nieuwe regel raken en sla het op als een tekenreeks. Na dat moeten we converteren naar een float en sla het 'motangle', maar net voordat dat controleren om te zien als 'myString' eigenlijk iets opgeslagen.

Nu de pret een beetje. Maak een lus die één keer wordt herhaald voor elke pixel op de webcam. Controleer om te zien of de huidige pixel een waarde voor rood dat is meer dan een bepaalde drempelwaarde. Hier bepaalt u de gevoeligheid van de scanner. Hoe lager de drempel (zo laag als 1) hoe gevoeliger de scan, gebruikt voor zeer donkere scènes waarin het laserlicht zeer dim, blijken alle verlichting hiervoor. Een hogere drempel kan worden gebruikt wanneer er andere licht in de scene (Houd het minimale wel) en u wilt dat alleen de heldere lijn te worden uitgekozen. DUS! Als de rode groter dan deze waarde is, dan schakelt u een witte pixel op de dezelfde Pixelcoördinaat in afbeelding 1. Dit geeft een zwart/wit beeld waar de rode bits zijn wit en alles is zwart.

Als we dit beeld in de 3D-programma gebruikt, zou het bijna zeker verpletteren. Het is veel te veel gegevenspunten. Het zou ook een zeer dikke oppervlakte-afwerking geven aan alles, omdat de lijn wazig en breed is.

Om dit te verhelpen, maak een andere lus hetzelfde als de vorige for-lus. Breng een tijdje lus in die lus. De tijdjelijn kan alleen worden uitgevoerd als het gaat over een witte pixel in afbeelding 1 en het is nog steeds binnen het besturingselement image en als het op een lijn die dividable door 5. Dit laatste stukje geeft ons het decimale deel, hebt u de modulo functie om dit te doen. Het nummer dat u gebruiken zal bepalen van de verticale resolutie van de scan. Bekijk de video voor een betere uitleg van dit.

Dus in dit while lus, is alles wat we doen graaf up met behulp van de 'k' (en 'i' zo goed omdat de voor lus is niet het krijgen van een kans om het te doen). Dus deze lus wordt herhaald, zolang het is in een rij van witte pixels in afbeelding 1, dus 'k' is tellen hoeveel zijn in een rij. Zodra het een zwarte pixel weer raakt, het springt uit de lus en een witte pixel plops in afbeelding 2 in het midden van die rij liep gewoon door.

Dan moet je hoeft af te drukken van de X- en Y-coördinaten van deze nieuwe witte pixel naar de tekstbestand! Vergeet niet te scheiden van de coördinaten met een "," zodat de volgende schets weet wat wat is. Als u wilt afdrukken van de X-coördinaat, moeten we gebruiken de modulo functie weer, het geeft ons de kolom die de pixel is op (ik % 640). En voor de Y-coördinaat moeten we vinden van de rij is het op, dit doen door het aantal pixels te delen door de breedte (ik / 640). Dit afgerond naar het antwoord dat perfect is omdat het geeft ons de exacte rij zijn op!

Vervolgens kunnen we de beelden afdrukken naar onze render-venster om te bekijken wat er gaande. Ik zet de webcam waardplanten en/of afbeelding 2 hieronder zodat ik het eindresultaat kan zien. Voor het plaatsen van de afbeeldingen, de eerste die begint bij 0,0 (pictogram linksboven in het venster) en het volgende beeld op 0,480 (de helft naar beneden aan de linkerkant).

Dan moeten wij controleren de motor hoek en te zien als het sturen van de geheime code om ons om te stoppen met de schets te vertellen. Herinner me dat wij sturen een hoek van 500 wanneer het te stoppen, willen is zodat we gewoon controleren om te zien of het meer dan 450 is. Als er, dan wij de tekst bestand buffer leegmaken en sluit het bestand en sluit het programma af.

Gerelateerde Artikelen

Saus van tomaat en rundvlees volledig vanaf nul

Saus van tomaat en rundvlees volledig vanaf nul

dit is ongeveer zoals "from scratch" als kunt u het zonder het moeten uitgaan van de slager uw eigen vlees. Ik heb deze saus meerdere malen nu en ik voel mijn methoden worden verfijnd genoeg waar ik ben comfortabel met de Instructable Gemeenscha
Cm7b5 - het maken van een compiler voor x86 vanaf nul

Cm7b5 - het maken van een compiler voor x86 vanaf nul

Dit is een tutorial voor het maken van een compiler voor een eenvoudige subset van de C taal op x86 het platform. De broncode en de voorbeelden zijn op github.comCm7b5 broncodeCm7b5 wikiDe codevoorbeelden doorlopen progressieve stappen:Tekenreeks tok
Geklonken Maille vanaf nul.

Geklonken Maille vanaf nul.

Er zijn al een aantal Instructables op maken van maille, en verschillende projecten uit maille. Het één ding dat ik vond dat ontbrak was hoe maak geklonken maille.Nu, in het verleden ik heb dabbled in geklonken maille een beetje, mijn maille en plate
Lekker brood van de banaan (vanaf nul)

Lekker brood van de banaan (vanaf nul)

dit is mijn eerste instructable. En dit is banaanbrood die ik... vanaf nul gemaakt. Reactie hieronder en vertel me wat je denkt. Als ik genoeg goede reacties te krijgen zou kunnen ik proberen een ander instructable!!!Stap 1: Ingrediënten en benodigdh
Hoe het bouwen van een zeilboot roer vanaf nul

Hoe het bouwen van een zeilboot roer vanaf nul

deze bijzondere roer is gebouwd op het oorspronkelijke roer voor een ~ 20' Bayliner Buccaneer zeilboot.  Het origineel had gekraakt en rotten vrij slecht.  De eigenaar van de zeilboot afgesneden van de bovenkant van het roer en gemaakt van een houten
Een spiraal Rainbow Kite staart vanaf nul

Een spiraal Rainbow Kite staart vanaf nul

Ik heb willen om een staart voor mijn kite voor geruime tijd nu. Ik vlieg een prisma Quantum stunt vlieger die - op 84 inch over de spanwijdte - een behoorlijk indrukwekkend vlieger, waardoor er een vrij indrukwekkende staart. Toen ik voor het eerst
79cc gemotoriseerde fiets vanaf nul

79cc gemotoriseerde fiets vanaf nul

Hallo weer iedereen! In dit instructable ik zal je laten zien hoe het bouwen van een 79cc, 4 takt gemotoriseerde fiets vanaf nul (niet een motor kit). De fiets die we zullen bouwen is veruit superieur aan kit motoren op vrijwel alle gebieden, met inb
Een carbon fibre viool ik vanaf nul maakte

Een carbon fibre viool ik vanaf nul maakte

vorig jaar maakte ik een carbon fibre viool,Ik begon door het opstellen van een viool op papier, uitwerken van de hoogten van de kromme, plotten van de partij op papier,Zodra ik had mijn plannen het tijd was om te beginnen met het maken van mallen, d
HacKeyboard, een mechanisch toetsenbord gebouwd vanaf nul

HacKeyboard, een mechanisch toetsenbord gebouwd vanaf nul

Hallo collega 'instructablers'! In dit instructable zult presenteer ik u een gloednieuw project dat ik net heb voltooid. In feite ben ik met behulp van het project zelf te schrijven dit instructable. Presenteer ik u de verbazingwekkende, het fantasti
Lederen Spiked manchet vanaf nul

Lederen Spiked manchet vanaf nul

Hallo iedereen, dit is mijn eerste Instructable. Ik heb genoten van deze site al enkele jaren, en ik denk dat it's about time die ik terug te aan de prachtige gemeenschap hier geven.Ik ben een internationale student die momenteel studeren in China, e
Shoji stijl kast schuifdeuren, vanaf nul.

Shoji stijl kast schuifdeuren, vanaf nul.

Mijn huis had de generieke metalen bi-fold kast deuren die er erg goedkoop uitzien. Ik wilde een hogere einde blik maar niet een hogere einde prijskaartje. Na de echte Shoji prijzen is deuren op in de omgeving van $1000 die heb ik besloten dat ik kon
Hoe maak je een Arduino vanaf nul

Hoe maak je een Arduino vanaf nul

Zuinig Engineering is de beste weg vooruit voor de wetenschap.Bent u geïnteresseerd in het maken van enkele arduino vanaf nul, bent u bij ons aan het juiste adres.Ziet u een video tutorial van dit instructable: hierHet zal vullen alle mazen of twijfe
Maak een Bahut, vanaf nul

Maak een Bahut, vanaf nul

Meer opslagruimte en oppervlakte, hopelijk unclutter onze keukeneiland, te creëren zochten we een brede bahut.Uiteindelijk heb ik een, met enkel basishulpmiddelen handheld. Dit alles duurde minder dan drie dagen. Klinkt interessant? Stem dan alstubli
Passievruchten azijn (vanaf nul) met wortel paprika salade

Passievruchten azijn (vanaf nul) met wortel paprika salade

Ik kwam over fruit smaak azijn en was gefascineerd door het concept. Passievruchten was mijn eerste keuze, aangezien er een unieke smaak van zijn eigen. de zure smaak is net wat ik wil voor een salade. Dus ik probeerde het maken van passievruchten az