Sådan opretter du fantastiske webkameraeffekter ved hjælp af Java og behandling

Sådan opretter du fantastiske webkameraeffekter ved hjælp af Java og behandling

Behandling er et kraftfuldt værktøj, der gør det muligt at skabe kunst gennem kode. Det er kombinationen af ​​et Java -bibliotek til at arbejde med grafik og et integreret udviklingsmiljø (IDE), som giver dig mulighed for let at skrive og køre kode.





Der er mange grafik- og animationsbegynderprojekter, der bruger Processing, men det er også i stand til at manipulere livevideo.





I dag laver du et live -video -diasshow med forskellige effekter, der styres af musen, ved hjælp af videobiblioteket Processing. Udover at vende livevideoen lærer du at ændre størrelsen og farve den, og hvordan du får den til at følge musemarkøren.





Projektopsætning

At begynde, Hent behandling og åbn en tom skitse. Denne vejledning er baseret på et Windows -system, men det bør fungere på enhver computer med et webcam.

Du skal muligvis installere Processing Video -biblioteket, der er tilgængeligt under Skitse> Importer bibliotek> Tilføj bibliotek . Søge efter Video i søgefeltet, og installer biblioteket fra Forarbejdningsfonden .



Når den er installeret, er du klar til at gå. Hvis du vil springe kodningen over, kan du download den komplette skitse . Det er dog meget bedre at lave det selv fra bunden!

Brug af et webcam med behandling

Lad os begynde med at importere biblioteket og oprette en Opsætning fungere. Indtast følgende i den tomme behandlingsskitse:





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

Efter import af videobiblioteket opretter du en Fange instans kaldet orange at gemme data fra webcam. I Opsætning , det størrelse funktion opsætter en 640x480 pixel størrelse vindue at arbejde i.

Den næste linje tildeler orange til en ny forekomst af Fange , til det her skitse, som er den samme størrelse som vinduet, før du fortæller kameraet at tænde med cam.start () .





Bare rolig, hvis du ikke forstår alle dele af dette for nu. Kort sagt har vi bedt Processing om at lave et vindue, finde vores kamera og tænde det! For at vise det har vi brug for en tegne fungere. Indtast dette under koden ovenfor, uden for de krøllede parenteser.

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

Det tegne funktion kaldes hver ramme. Det betyder, at mange gange hvert sekund, hvis kameraet har data ledig du Læs dataene fra den.

Disse data vises derefter som en billede , på stillingen 0, 0 , som er øverst til venstre i vinduet.

Gem din skitse, og tryk på afspilningsknappen øverst på skærmen.

Succes! Data gemt af orange udskrives korrekt på skærmen hvert billede. Hvis du har problemer, skal du kontrollere din kode grundigt. Java har brug for hver parentes og semikolon på det rigtige sted! Behandling kan også kræve et par sekunder for at få adgang til webkameraet, så hvis du tror, ​​at det ikke virker, skal du vente et par sekunder, efter at scriptet er startet.

Vende billedet

Nu hvor du har et live webcam -billede, lad os manipulere det. I tegnefunktionen skal du udskifte billede (cam, 0,0); med disse to linjer kode.

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

Gem og gentag skitsen. Kan du se forskellen? Ved at bruge en negativ vægt værdi, alle x værdier (de vandrette pixels) er nu omvendt. På grund af dette skal vi bruge vinduets negative værdi bredde for at placere billedet korrekt.

At vende billedet på hovedet kræver blot et par små ændringer.

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

Denne gang er både x og og værdier vendes, vender billedet på live -kameraet på hovedet. Indtil videre har du kodet et normalt billede, et vandret billede og et lodret billede. Lad os oprette en måde at cykle mellem dem.

At få det til at cykle

I stedet for at omskrive din kode hver gang, kan vi bruge numre til at gennemgå dem. Opret en ny heltal øverst i din kode kaldet switcher .

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

Vi kan bruge værdien af ​​switcher til at bestemme, hvad der sker med kamerabilledet. Når skitsen starter, giver du den en værdi af 0 . Nu kan vi bruge logik til at ændre, hvad der sker med billedet. Opdater din tegne metode til at se sådan ud:

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;
}
}

Nu vil alle tre variationer af koden udløses afhængigt af værdien af ​​switcher. Hvis det ikke matcher en af ​​vores hvis eller hvis ellers udsagn, den andet klausul nulstilles til 0. Logik er en vigtig nybegynderfærdighed at lære, og du kan finde ud af mere om dem og meget mere med en fremragende YouTube -programmeringsvejledning!

Brug af musen

Behandlingen har indbyggede metoder til adgang til musen. For at registrere, hvornår brugeren klikker på musen, skal du tilføje musepresset funktion i bunden af ​​dit script.

hvordan man får windows 10 til at se bedre ud
void mousePressed(){
switcher++;
}

Behandlingen lytter efter museklik og afbryder programmet for at udføre denne metode, når den registrerer en. Hver gang metoden bliver kaldt, bliver værdien af ​​switcher større med en. Gem og kør dit script.

Når du nu trykker på museknappen, går den gennem de forskellige orienteringer af videoer, før den vender tilbage til originalen. Indtil videre har du lige vendt videoen, lad os nu gøre noget lidt mere interessant.

Tilføjelse af flere effekter

Nu vil du kode en firefarvet levende billedeffekt, der ligner de berømte Andy Warhol-kunstværker. Tilføjelse af flere effekter er lige så enkelt som at tilføje en anden klausul til logikken. Føj dette til dit script mellem de sidste ellers hvis erklæring, og andet .

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 kode bruger billede funktion til at oprette fire separate kamerabilleder i hvert hjørne af skærmen og gøre dem alle i halv størrelse.

Det farvetone funktion tilføjer farve til hvert kamerabillede. De tal, parenteserne er rød, grøn og blå (RGB) værdier. Tint farver alle følgende koder med den valgte farve.

Gem og spil for at se resultatet. Prøv at ændre RGB -numrene i hvert farvetone funktion til at ændre farverne!

Gør det til at følge musen

Lad os endelig få det levende billede til at følge musens position ved hjælp af nyttige funktioner fra biblioteket Processing. Tilføj dette over andet del af din logik.

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

Her placerer du billedet fra dit kamera kl musX og mus Y . Disse er indbygget i behandlingsværdier, der returnerer hvilken pixel musen peger på.

Det er det! Fem varianter af live video gennem kode. Når du kører koden, vil du dog bemærke et par problemer.

Afslutning af koden

Koden, du har oprettet indtil videre, fungerer, men du vil bemærke to problemer. For det første, når først fire-farve variationen viser, er alt bagefter tonet lilla. For det andet, når du flytter videoen med musen, efterlader den et spor. Du kan rette det ved at tilføje et par linjer til toppen af ​​tegnefunktionen.

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

I starten af ​​hvert billede nulstiller denne kode farven til hvid og tilføjer en baggrundsfarve i sort for at stoppe videoen med at forlade stier. Når du nu tester programmet, fungerer alt perfekt!

Webkameraeffekter: Art From Code

Forarbejdning er meget kraftfuld, og du kan bruge den til at gøre mange ting. Det er en glimrende platform til at lave kunst med kode, men det er lige så velegnet til at styre robotter!

Hvis Java ikke er din ting, er der et JavaScript -bibliotek baseret på Processing kaldet p5.js. Det er browserbaseret, og selv begyndere kan bruge det til at oprette fantastiske reaktive animationer!

Billedkredit: Syda_Productions / Depositphotos

Del Del Tweet E -mail 3 måder at kontrollere, om en e -mail er ægte eller falsk

Hvis du har modtaget en e -mail, der ser lidt tvivlsom ud, er det altid bedst at kontrollere dens ægthed. Her er tre måder at se, om en e -mail er ægte.

Læs Næste
Relaterede emner
  • Programmering
  • Java
  • Webcam
  • Forarbejdning
  • Kodning Tutorials
Om forfatteren Ian Buckley(216 artikler udgivet)

Ian Buckley er freelance journalist, musiker, performer og videoproducent bosat i Berlin, Tyskland. Når han ikke skriver eller på scenen, piller han med DIY -elektronik eller kode i håb om at blive en gal videnskabsmand.

Mere fra Ian Buckley

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere