Hvordan lage fantastiske webkameraeffekter ved hjelp av Java og prosessering

Hvordan lage fantastiske webkameraeffekter ved hjelp av Java og prosessering

Behandling er et kraftig verktøy som gjør det mulig å lage kunst gjennom kode. Det er en kombinasjon av et Java -bibliotek for å arbeide med grafikk, og et integrert utviklingsmiljø (IDE) som lar deg enkelt skrive og kjøre kode.





Det er mange grafikk- og animasjonsprosjekter for nybegynnere som bruker prosessering, men det er også i stand til å manipulere livevideo.





I dag lager du en live video lysbildefremvisning av forskjellige effekter kontrollert av musen, ved hjelp av Processing video library. I tillegg til å snu livevideoen, lærer du å endre størrelse og farge den, og hvordan du får den til å følge musepekeren.





Prosjektoppsett

Å begynne, Last ned behandling og åpne en tom skisse. Denne opplæringen er basert på et Windows -system, men den skal fungere på hvilken som helst datamaskin med et webkamera.

Du må kanskje installere Processing Video -biblioteket, tilgjengelig under Skisse> Importer bibliotek> Legg til bibliotek . Søk etter Video i søkeboksen, og installer biblioteket fra Behandlingsstiftelsen .



Når den er installert, er du klar til å gå. Hvis du vil hoppe over kodingen, kan du last ned hele skissen . Det er imidlertid mye bedre å lage det selv fra bunnen av!

Bruke et webkamera med behandling

La oss begynne med å importere biblioteket og lage et oppsett funksjon. Skriv inn følgende i den tomme behandlingsskissen:





import processing.video.*;
Capture cam;
void setup(){
size(640,480);
cam = new Capture(this, 640, 480);
cam.start();
}

Etter at du har importert videobiblioteket, oppretter du en Capture forekomst kalt oransje for å lagre dataene fra webkameraet. I oppsett , størrelse funksjonen setter opp en 640x480 pikselstørrelse for å jobbe i.

Den neste linjen tildeler oransje til en ny forekomst av Capture , for dette skisse, som er i samme størrelse som vinduet, før du ber kameraet slå på cam.start () .





Ikke bekymre deg hvis du ikke forstår alle deler av dette foreløpig. Kort sagt, vi har fortalt Processing å lage et vindu, finne kameraet vårt og slå det på! For å vise det trenger vi en tegne funksjon. Skriv inn dette under koden ovenfor, utenfor de krøllete parentesene.

void draw(){
if (cam.available()){
cam.read();
}
image(cam,0,0);
}

De tegne funksjon blir kalt hver ramme. Dette betyr at mange ganger hvert sekund, hvis kameraet har data tilgjengelig du lese dataene fra den.

Disse dataene vises deretter som en bilde , på stillingen 0, 0 , som er øverst til venstre i vinduet.

Lagre skissen din, og trykk på avspillingsknappen øverst på skjermen.

Suksess! Dataene lagret av oransje skrives ut riktig på skjermen hver ramme. Hvis du har problemer, sjekk koden grundig. Java trenger hver brakett og semikolon på rett sted! Behandling kan også kreve noen få sekunder for å få tilgang til webkameraet, så hvis du tror det ikke fungerer, vent noen sekunder etter at skriptet er startet.

Snu bildet

Nå som du har et live webcam -bilde, la oss manipulere det. I trekkfunksjonen, erstatt image (kam, 0,0); med disse to kodelinjene.

scale(-1,1);
image(cam,-width,0);

Lagre og kjør skissen på nytt. Kan du se forskjellen? Ved å bruke en negativ skala verdi, alle x verdiene (de horisontale pikslene) er nå reversert. På grunn av dette må vi bruke vinduets negative verdi bredde for å plassere bildet riktig.

Å snu bildet opp ned krever bare et par små endringer.

scale(-1,-1);
image(cam,-width,-height);

Denne gangen, både x og og verdiene vendes, snur bildet på live -kameraet opp ned. Så langt har du kodet et normalt bilde, et horisontalt vendt bilde og et vertikalt vendt bilde. La oss sette opp en måte å sykle mellom dem.

Gjør det syklus

I stedet for å skrive om koden hver gang, kan vi bruke tall for å bla gjennom dem. Lage en ny heltall øverst i koden din switcher .

import processing.video.*;
int switcher = 0;
Capture cam;

Vi kan bruke verdien av switcher til å bestemme hva som skjer med kamerabildet. Når skissen starter, gir du den en verdi på 0 . Nå kan vi bruke logikk til å endre hva som skjer med bildet. Oppdater din tegne metode for å se slik ut:

void draw(){
if (cam.available()){
cam.read();
}
if(switcher==0){
image(cam,0,0);
}
else if(switcher == 1){
scale(-1,1);
image(cam,-width,0);
}
else if(switcher == 2){
scale(-1,-1);
image(cam,-width,-height);
}
else{
println('Switcher = 0 again');
switcher = 0;
}
}

Nå vil alle tre variasjonene av koden utløses avhengig av verdien på switcher. Hvis det ikke stemmer overens med en av våre hvis eller hvis ellers uttalelser, ellers klausulen blir tilbakestilt til 0. Logikk er en viktig nybegynnerferdighet å lære, og du kan finne ut om dem og mye mer med en utmerket YouTube -programmeringsopplæring!

Bruke musen

Behandlingen har innebygde metoder for tilgang til musen. For å oppdage når brukeren klikker på musen, legg til musepresset funksjon nederst i skriptet.

hvordan du ser dyr i 3d på google
void mousePressed(){
switcher++;
}

Behandlingen lytter etter museklikk og avbryter programmet for å utføre denne metoden når den oppdager en. Hver gang metoden blir kalt, blir verdien av switcher større med en. Lagre og kjør skriptet ditt.

Når du trykker på museknappen, går den gjennom de forskjellige orienteringene til videoer før den går tilbake til originalen. Så langt har du nettopp snudd videoen, la oss gjøre noe litt mer interessant.

Legger til flere effekter

Nå vil du kode en firefarget levende bildeeffekt som ligner på de berømte Andy Warhol-kunstverkene. Å legge til flere effekter er like enkelt som å legge til en annen klausul i logikken. Legg dette til i skriptet ditt mellom det siste eller hvis uttalelse, og ellers .

else if(switcher == 3){
tint(256, 0, 0);
image(cam, 0, 0, width/2, height/2);
tint(0, 256, 0);
image(cam, width/2, 0, width/2, height/2);
tint(0, 0, 256);
image(cam, 0, height/2, width/2, height/2);
tint(256, 0, 256);
image(cam, width/2, height/2, width/2, height/2);
}

Denne koden bruker bilde funksjon for å lage fire separate kamerabilder i hvert hjørne av skjermen og for å gjøre dem alle i halv størrelse.

De fargenyanse funksjonen gir farge til hvert kamerabilde. Tallene parentesene er rød, grønn og blå (RGB) verdier. Fargetone alle følgende koder med den valgte fargen.

Lagre og spill for å se resultatet. Prøv å endre RGB -tallene i hver fargenyanse funksjon for å endre farger!

Gjør det følge musen

Til slutt, la oss få det levende bildet til å følge museposisjonen ved hjelp av nyttige funksjoner fra behandlingsbiblioteket. Legg til dette over ellers del av logikken din.

else if(switcher==4 ){
image(cam, mouseX, mouseY, width/2, height/2);
}

Her plasserer du bildet fra kameraet ditt på musX og musY . Disse er innebygd i behandlingsverdier som returnerer hvilken piksel musen peker på.

Det er det! Fem varianter av live video gjennom kode. Når du kjører koden, vil du imidlertid legge merke til et par problemer.

Fullfører koden

Koden du har opprettet så langt fungerer, men du vil legge merke til to problemer. For det første, når firefargevarianten viser seg, er alt etterpå farget lilla. For det andre, når du flytter videoen med musen, etterlater den et spor. Du kan fikse det ved å legge til et par linjer øverst i trekkfunksjonen.

void draw(){
tint(256,256,256);
background(0);
//draw function continues normally here!

Ved starten av hvert bilde tilbakestiller denne koden fargen til hvit, og den legger til en bakgrunnsfarge i svart for å stoppe videoen fra å forlate stier. Når du tester programmet, fungerer alt perfekt!

Webkameraeffekter: Art From Code

Behandlingen er veldig kraftig, og du kan bruke den til å gjøre mange ting. Det er en utmerket plattform for å lage kunst med kode, men det er like egnet for å kontrollere roboter!

Hvis Java ikke er noe for deg, er det et JavaScript -bibliotek basert på prosessering kalt p5.js. Det er nettleserbasert, og til og med nybegynnere kan bruke det til å lage fantastiske reaktive animasjoner!

Bildekreditt: Syda_Productions / Depositphotos

Dele Dele kvitring E -post 3 måter å sjekke om en e -post er ekte eller falsk

Hvis du har mottatt en e -post som ser litt tvilsom ut, er det alltid best å sjekke ektheten. Her er tre måter å fortelle om en e -post er ekte.

Les neste
Relaterte temaer
  • Programmering
  • Java
  • Webkamera
  • Behandling
  • Opplæringsprogrammer for koding
Om forfatteren Ian Buckley(216 artikler publisert)

Ian Buckley er frilansjournalist, musiker, utøver og videoprodusent bosatt i Berlin, Tyskland. Når han ikke skriver eller står på scenen, pusler han med DIY elektronikk eller kode i håp om å bli en gal forsker.

Mer fra Ian Buckley

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere