Paano Lumikha ng Kamangha-manghang Mga Epekto sa Webcam Gamit ang Java at Pagproseso

Paano Lumikha ng Kamangha-manghang Mga Epekto sa Webcam Gamit ang Java at Pagproseso

Ang pagpoproseso ay isang malakas na tool na nagbibigay-daan sa paglikha ng sining sa pamamagitan ng code. Ito ay ang kumbinasyon ng isang silid-aklatan ng Java para sa pagtatrabaho sa mga graphic, at isang pinagsamang kapaligiran sa pag-unlad (IDE) na nagbibigay-daan sa iyo upang sumulat at magpatakbo ng code nang madali.





Mayroong maraming mga proyekto sa graphic at animasyon na nagsisimula sa Pagproseso, ngunit may kakayahang manipulahin din ang live na video.





Ngayon ay makakagawa ka ng isang live na video slideshow ng iba't ibang mga epekto na kinokontrol ng mouse, gamit ang Pagproseso ng video library. Pati na rin ang pag-flip ng live na video, matututunan mong baguhin ang laki at kulayan ito, at kung paano ito sundin ang cursor ng mouse.





Pag-setup ng Project

Magsimula, i-download ang Pagproseso at buksan ang isang blangko na sketch. Ang tutorial na ito ay batay sa isang sistema ng Windows, ngunit dapat itong gumana sa anumang computer na may isang webcam.

Maaaring kailanganin mong i-install ang library ng Pagproseso ng Video, na maa-access sa ilalim Sketch> I-import ang Library> Magdagdag ng Library . Paghahanap para sa Video sa box para sa paghahanap, at mai-install ang library mula sa Ang Processing Foundation .



Kapag na-install na, handa ka nang umalis. Kung nais mong laktawan ang pag-coding, maaari mo i-download ang kumpletong sketch . Mas mahusay na gawin itong sarili mo mula sa simula, subalit!

Paggamit ng isang Webcam Sa Pagpoproseso

Magsisimula tayo sa pamamagitan ng pag-import ng library, at paglikha ng a pag-setup pagpapaandar Ipasok ang sumusunod sa blangko sa Pagproseso ng sketch:





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

Matapos ang pag-import ng video library, lumikha ka ng isang Makunan tinatawag na halimbawa Kahel upang maiimbak ang data mula sa webcam. Sa pag-setup , ang laki nag-set up ng pag-andar a 640x480 pixel na laki ng window upang gumana.

Ang susunod na linya ay nagtatalaga Kahel sa isang bagong halimbawa ng Makunan , para sa ito sketch, na kapareho ng laki ng window, bago sabihin sa camera na i-on cam.start () .





Huwag magalala kung hindi mo naintindihan ang bawat bahagi nito sa ngayon. Sa madaling sabi, sinabi namin sa Pagproseso na gumawa ng isang window, hanapin ang aming camera, at i-on ito! Upang maipakita ito kailangan namin ng gumuhit pagpapaandar Ipasok ito sa ibaba ng code sa itaas, sa labas ng mga kulot na braket.

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

Ang gumuhit Tawag ay tinatawag na bawat frame. Nangangahulugan ito na maraming beses bawat segundo, kung may data ang camera magagamit ikaw basahin ang data mula rito.

Ang data na ito ay ipinapakita bilang isang imahe , sa posisyon 0, 0 , na kung saan ay ang kaliwang tuktok ng window.

I-save ang iyong sketch, at pindutin ang pindutan ng pag-play sa tuktok ng screen.

Tagumpay! Ang data na nakaimbak ng Kahel wastong nai-print sa screen bawat frame. Kung nagkakaproblema ka, suriin nang mabuti ang iyong code. Kailangan ng Java ang bawat bracket at semi-colon sa tamang lugar! Ang pagproseso ay maaari ding mangailangan ng ilang segundo upang ma-access ang webcam, kaya kung sa palagay mo hindi ito gumagana maghintay ng ilang segundo matapos ilunsad ang script.

Flipping ang Larawan

Ngayon na mayroon kang isang live na imahe ng webcam manipulahin natin ito. Sa paggana ng pagguhit, palitan imahe (cam, 0,0); kasama ang dalawang linya ng code.

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

I-save at ilunsad muli ang sketch. Nakikita mo ba ang pagkakaiba? Sa pamamagitan ng paggamit ng negatibo sukatan halaga, lahat ng x ang mga halaga (ang mga pahalang na pixel) ay nababaligtad ngayon. Dahil dito, kailangan nating gamitin ang negatibong halaga ng window lapad upang iposisyon nang tama ang imahe.

Ang pag-flip ng imahe ng baligtad ay nangangailangan ng ilang maliit na pagbabago.

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

Sa oras na ito, kapwa ang x at at ang mga halaga ay binaligtad, binabaligtad ang imahe ng live na camera. Sa ngayon naka-code ka ng isang normal na imahe, isang pahalang na pitik na imahe, at isang patayong na-flip na imahe. Mag-set up tayo ng isang paraan upang mag-ikot sa pagitan nila.

Ginagawa itong Ikot

Sa halip na muling isulat ang iyong code sa bawat oras, maaari kaming gumamit ng mga numero upang paikutin ang mga ito. Gumawa ng bago integer sa tuktok ng iyong code na tinawag tagapalit .

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

Maaari naming gamitin ang halaga ng switch upang matukoy kung ano ang nangyayari sa imahe ng camera. Kapag nagsimula ang sketch, bibigyan mo ito ng isang halaga ng 0 . Maaari na naming magamit ang lohika upang mabago kung ano ang nangyayari sa imahe. I-update ang iyong gumuhit paraan upang magmukhang ganito:

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

Ngayon, ang lahat ng tatlong mga pagkakaiba-iba ng code ay mag-uudyok depende sa halaga ng tagapalit. Kung hindi ito tumutugma sa isa sa amin kung o kung hindi pahayag, ang iba pa ang sugnay ay nai-reset sa 0. Ang lohika ay isang mahalagang kasanayan sa nagsisimula upang malaman, at maaari mong malaman ang tungkol sa kanila at marami pang iba sa isang mahusay na Tutorial sa Programming sa YouTube!

Gamit ang Mouse

Ang pagproseso ay may mga built-in na pamamaraan para sa pag-access sa mouse. Upang matukoy kapag na-click ng gumagamit ang mouse, idagdag ang pinindot ang mouse gumana sa ilalim ng iyong script.

Hindi makakonekta ang laptop sa wifi windows 10
void mousePressed(){
switcher++;
}

Ang pagpoproseso ay nakikinig para sa anumang pag-click sa mouse at nakakagambala sa programa upang maisagawa ang pamamaraang ito kapag nakakita ito ng isa. Sa tuwing tatawagin ang pamamaraan, ang halaga ng tagapalit ay lumalaki nang isa-isa. I-save at patakbuhin ang iyong script.

Ngayon, kapag pinindot mo ang pindutan ng mouse, umiikot ito sa iba't ibang mga orientation ng mga video, bago bumalik sa orihinal. Sa ngayon ay na-flip mo lang ang video, ngayon ay gumawa tayo ng isang bagay na medyo mas kawili-wili.

Pagdaragdag ng Maraming Epekto

Ngayon, mag-code ka ng isang apat na kulay na live na epekto ng imahe na katulad ng sikat na mga likhang sining ni Andy Warhol. Ang pagdaragdag ng higit pang mga epekto ay kasing simple ng pagdaragdag ng isa pang sugnay sa lohika. Idagdag ito sa iyong script sa pagitan ng huli kung hindi man pahayag, at iba pa .

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

Gumagamit ang code na ito ng imahe pagpapaandar upang lumikha ng apat na magkakahiwalay na mga imahe ng camera sa bawat sulok ng screen at gawin silang kalahating laki.

Ang tint Ang pag-andar ay nagdaragdag ng kulay sa bawat imahe ng camera. Ang mga bilang ng mga braket ay pula, berde, at asul (RGB) halaga Kulay ng tint ang lahat ng sumusunod na code na may napiling kulay.

I-save at i-play upang makita ang resulta. Subukang baguhin ang mga numero ng RGB sa bawat isa tint pagpapaandar upang baguhin ang mga kulay!

Ginagawa Ito na Sundin ang Mouse

Sa wakas, gawin nating sundin ang live na imahe sa posisyon ng mouse gamit ang mga kapaki-pakinabang na pag-andar mula sa library ng Pagproseso. Idagdag ito sa itaas ng iba pa bahagi ng iyong lohika.

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

Dito, pinoposisyon mo ang imahe mula sa iyong camera sa mouseX at mouseY . Ang mga ito ay binuo sa mga halaga ng Pagproseso na magbabalik sa aling pixel na tinuturo ng mouse.

Ayan yun! Limang pagkakaiba-iba ng live na video sa pamamagitan ng code. Gayunpaman, kapag pinatakbo mo ang code, mapapansin mo ang ilang mga problema.

Tinatapos ang Code

Ang code na iyong nilikha hanggang ngayon ay gumagana, ngunit mapapansin mo ang dalawang mga isyu. Una, kapag ipinakita ang pagkakaiba-iba ng apat na kulay, ang lahat pagkatapos ay may kulay na lila. Pangalawa, kapag inilipat mo ang video gamit ang mouse, nag-iiwan ito ng isang trail. Maaari mong ayusin ito sa pamamagitan ng pagdaragdag ng isang pares ng mga linya sa tuktok ng paggana ng pagguhit.

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

Sa pagsisimula ng bawat frame na itinatakda ng code na ito ang kulay na kulay sa puti, at nagdaragdag ng isang kulay ng background ng itim upang itigil ang video na umaalis sa mga daanan. Ngayon kapag sinubukan mo ang programa, ang lahat ay ganap na gumagana!

Mga Epekto sa Webcame: Art Mula sa Code

Napakalakas ng pagproseso, at magagamit mo ito upang makagawa ng maraming bagay. Ito ay isang mahusay na platform para sa paggawa ng sining na may code, ngunit ito ay pantay na angkop sa pagkontrol ng mga robot!

Kung ang Java ay hindi bagay sa iyo, mayroong isang library ng JavaScript batay sa Pagproseso na tinatawag na p5.js. Ito ay batay sa browser, at kahit na ang mga nagsisimula ay maaaring gamitin ito upang lumikha ng kamangha-manghang mga reaktibong animasyon!

Credit sa Larawan: Syda_Productions / Mga deposito

Magbahagi Magbahagi Mag-tweet Email 3 Mga Paraan upang Suriin kung Ang isang Email Ay Totoo o Pekeng

Kung nakatanggap ka ng isang email na mukhang medyo nagdududa, palaging pinakamahusay na suriin ang pagiging tunay nito. Narito ang tatlong paraan upang malaman kung ang isang email ay totoo.

Basahin Susunod
Mga Kaugnay na Paksa
  • Programming
  • Java
  • Webcam
  • Pinoproseso
  • Mga Tutorial sa Coding
Tungkol sa May-akda Ian Buckley(216 Mga Artikulo Nai-publish)

Si Ian Buckley ay isang freelance journalist, musikero, tagaganap at tagagawa ng video na naninirahan sa Berlin, Germany. Kapag hindi siya nagsusulat o nasa entablado, nakikipag-usap siya sa mga elektronikong DIY o code sa pag-asang maging isang baliw na siyentista.

Higit pa Mula kay Ian Buckley

Mag-subscribe sa aming newsletter

Sumali sa aming newsletter para sa mga tip sa tech, pagsusuri, libreng ebook, at eksklusibong deal!

Mag-click dito upang mag-subscribe