Kaip sukurti nuostabius internetinių kamerų efektus naudojant „Java“ ir apdorojimą

Kaip sukurti nuostabius internetinių kamerų efektus naudojant „Java“ ir apdorojimą

Apdorojimas yra galingas įrankis, leidžiantis kurti meną naudojant kodą. Tai „Java“ bibliotekos, skirtos darbui su grafika, ir integruotos kūrimo aplinkos (IDE) derinys, leidžiantis lengvai rašyti ir paleisti kodą.





Yra daug grafikos ir animacijos pradedančiųjų projektų, kuriuose naudojamas apdorojimas, tačiau jis taip pat gali manipuliuoti tiesioginiu vaizdo įrašu.





Šiandien jūs sukursite tiesioginį vaizdo skaidrių demonstravimą iš įvairių efektų, valdomų pele, naudodami apdorojimo vaizdo įrašų biblioteką. Ne tik vartydami tiesioginį vaizdo įrašą, išmoksite keisti jo dydį ir spalvoti, ir kaip priversti jį sekti pelės žymeklį.





Projekto sąranka

Pradėti, parsisiųsti apdorojimas ir atidarykite tuščią eskizą. Ši pamoka yra pagrįsta „Windows“ sistema, tačiau ji turėtų veikti bet kuriame kompiuteryje su internetine kamera.

Jums gali tekti įdiegti apdorojimo vaizdo įrašų biblioteką, prieinamą skiltyje Eskizas> Importuoti biblioteką> Pridėti biblioteką . Ieškoti Vaizdo įrašas paieškos laukelyje ir įdiekite biblioteką iš Apdorojimo fondas .



Įdiegę, esate pasiruošę eiti. Jei norite praleisti kodavimą, galite atsisiųskite visą eskizą . Tačiau daug geriau tai padaryti patys nuo nulio!

Interneto kameros naudojimas su apdorojimu

Pradėkime importuodami biblioteką ir sukurdami sąranka funkcija. Į tuščią apdorojimo eskizą įveskite:





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

Importavę vaizdo įrašų biblioteką sukuriate Užfiksuoti vadinama instancija Oranžinė saugoti duomenis iš internetinės kameros. In sąranka , dydžio funkcija nustato a 640x480 pikselių dydžio langas darbui.

Sekanti eilutė priskiria Oranžinė į naują egzempliorių Užfiksuoti , dėl tai eskizą, kurio dydis yra toks pat kaip lango, prieš liepiant fotoaparatui įsijungti cam.start () .





Nesijaudinkite, jei kol kas nesuprantate visos šios dalies. Trumpai tariant, mes liepėme „Processing“ padaryti langą, surasti fotoaparatą ir jį įjungti! Norėdami jį parodyti, mums reikia a piešti funkcija. Įveskite tai po aukščiau esančiu kodu, už garbanotų skliaustų.

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

The piešti funkcija vadinama kiekviename kadre. Tai reiškia, kad daug kartų per sekundę, jei kamera turi duomenis galima tu skaityti duomenis iš jo.

Tada šie duomenys rodomi kaip įvaizdį , pozicijoje 0, 0 , kuris yra lango viršuje kairėje.

Išsaugokite eskizą ir paspauskite paleidimo mygtuką ekrano viršuje.

Sėkmė! Duomenys, kuriuos saugo Oranžinė yra teisingai spausdinamas ekrane kiekviename kadre. Jei kyla problemų, kruopščiai patikrinkite kodą. „Java“ reikia visų skliaustų ir dvitaškių tinkamoje vietoje! Apdorojimas taip pat gali užtrukti kelias sekundes, kad pasiektumėte internetinę kamerą, taigi, jei manote, kad ji neveikia, palaukite kelias sekundes po scenarijaus paleidimo.

Paveikslo vartymas

Dabar, kai turite tiesioginį internetinės kameros vaizdą, manipuliuokime juo. Piešimo funkcijoje pakeiskite vaizdas (kumštelis, 0,0); su šiomis dviem kodo eilutėmis.

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

Išsaugokite ir pakartokite eskizą. Ar matai skirtumą? Naudojant neigiamą skalė vertės, visos x vertės (horizontalūs pikseliai) dabar yra atvirkštinės. Dėl šios priežasties turime naudoti neigiamą lango vertę plotis kad vaizdas būtų teisingai išdėstytas.

Norėdami apversti vaizdą aukštyn kojomis, reikia atlikti tik keletą nedidelių pakeitimų.

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

Šį kartą tiek x ir ir vertės yra apverčiamos, apverčiant tiesioginį fotoaparato vaizdą aukštyn kojomis. Iki šiol kodavote įprastą vaizdą, horizontaliai apverstą vaizdą ir vertikaliai apverstą vaizdą. Nustatykime būdą, kaip važiuoti dviračiu tarp jų.

Sukurti ciklą

Užuot kiekvieną kartą perrašę kodą, galime naudoti skaičius, kad juos peržiūrėtume. Sukurkite naują sveikasis skaičius kodo viršuje vadinamas perjungiklis .

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

Mes galime naudoti perjungiklio vertę, kad nustatytume, kas nutinka fotoaparato vaizdui. Kai eskizas prasideda, jūs suteikiate jam reikšmę 0 . Dabar galime naudoti logiką, kad pakeistume tai, kas atsitinka vaizdui. Atnaujinkite savo piešti būdas atrodyti taip:

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

Dabar visi trys kodo variantai bus suaktyvinti priklausomai nuo perjungiklio vertės. Jei jis neatitinka vieno iš mūsų jei arba jei kitaip pareiškimai, Kitas Sąlyga iš naujo nustatoma į 0. Logika yra svarbus pradedančiojo įgūdis, kurį galite išmokti, ir jūs galite sužinoti apie juos ir daug daugiau naudodamiesi puikia „YouTube“ programavimo pamoka!

Naudojant pelę

Apdorojimas turi integruotus būdus, kaip pasiekti pelę. Norėdami nustatyti, kada naudotojas spustelėja pelę, pridėkite pelė funkcija jūsų scenarijaus apačioje.

stop kodo kmode išimtis nėra tvarkoma
void mousePressed(){
switcher++;
}

Apdorojimas klauso bet kokių pelės paspaudimų ir nutraukia programą, kad šis atliktų šį metodą, kai jį aptinka. Kiekvieną kartą iškviečiant metodą, perjungiklio vertė padidėja vienu. Išsaugokite ir paleiskite scenarijų.

Dabar, kai paspausite pelės mygtuką, jis pereis per skirtingas vaizdo įrašų orientacijas, prieš grįždamas prie originalo. Iki šiol jūs tik apvertėte vaizdo įrašą, o dabar padarykime šiek tiek įdomesnį.

Pridėti daugiau efektų

Dabar koduosite keturių spalvų tiesioginio vaizdo efektą, panašų į garsiuosius Andy Warhol meno kūrinius. Pridėti daugiau efektų yra taip paprasta, kaip į logiką pridėti kitą sąlygą. Pridėkite tai prie savo scenarijaus tarp paskutinių kitaip jei pareiškimas, ir Kitas .

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

Šis kodas naudoja įvaizdį funkciją, kad kiekviename ekrano kampe būtų sukurti keturi atskiri kameros vaizdai ir visi jie būtų perpus didesni.

The atspalvis funkcija prideda spalvų kiekvienam fotoaparato vaizdui. Skaičiai yra skliausteliuose raudona, žalia ir mėlyna (RGB) vertybes. Atspalvinkite visą toliau nurodytą kodą pasirinkta spalva.

Išsaugokite ir žaiskite, kad pamatytumėte rezultatą. Pabandykite pakeisti RGB numerius kiekviename atspalvis funkcija pakeisti spalvas!

Kaip sekti pelę

Galiausiai, leiskite tiesioginiam vaizdui sekti pelės padėtį, naudojant naudingas apdorojimo bibliotekos funkcijas. Pridėkite tai aukščiau Kitas dalis tavo logikos.

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

Čia jūs pozicionuojate vaizdą iš savo kameros pelėX ir peleY . Tai yra integruotos apdorojimo vertės, kurios grąžina tašką, į kurį rodo pelė.

Viskas! Penki tiesioginio vaizdo įrašo variantai per kodą. Tačiau paleidę kodą pastebėsite keletą problemų.

Užbaigti kodą

Iki šiol sukurtas kodas veikia, tačiau pastebėsite dvi problemas. Pirma, kai tik pasirodo keturių spalvų variacija, viskas vėliau būna violetinė. Antra, kai perkeliate vaizdo įrašą pele, jis palieka pėdsaką. Galite tai pataisyti pridėję keletą eilučių piešimo funkcijos viršuje.

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

Kiekvieno kadro pradžioje šis kodas atkuria atspalvio spalvą į baltą ir prideda juodą fono spalvą, kad vaizdo įrašas neliktų takelių. Dabar, kai išbandote programą, viskas veikia puikiai!

Interneto kameros efektai: menas iš kodo

Apdorojimas yra labai galingas, ir jūs galite jį naudoti daugeliui dalykų. Tai puiki platforma kurti meną su kodu, tačiau ji taip pat tinka robotams valdyti!

Jei „Java“ nėra jūsų dalykas, yra „JavaScript“ biblioteka, pagrįsta apdorojimu, vadinama p5.js. Tai naršyklė, ir net pradedantieji gali ją naudoti kurdami fantastišką reaktyvią animaciją!

Vaizdo kreditas: Syda_Productions / Depositphotos

Dalintis Dalintis „Tweet“ Paštu 3 būdai, kaip patikrinti, ar el

Jei gavote el. Laišką, kuris atrodo šiek tiek abejotinas, visada geriausia patikrinti jo autentiškumą. Štai trys būdai, kaip sužinoti, ar el.

Skaityti toliau
Susijusios temos
  • Programavimas
  • „Java“
  • Internetinė kamera
  • Apdorojimas
  • Kodavimo pamokos
Apie autorių Ianas Buckley(Paskelbti 216 straipsniai)

Ianas Buckley yra laisvai samdomas žurnalistas, muzikantas, atlikėjas ir vaizdo įrašų prodiuseris, gyvenantis Berlyne, Vokietijoje. Kai jis nerašo ar scenoje, jis tikisi pasidaryk pats elektronika ar kodu, tikėdamasis tapti pamišusiu mokslininku.

Daugiau iš Ian Buckley

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia