Jak stworzyć niesamowite efekty kamery internetowej za pomocą Javy i przetwarzania?

Jak stworzyć niesamowite efekty kamery internetowej za pomocą Javy i przetwarzania?

Przetwarzanie to potężne narzędzie, które umożliwia tworzenie sztuki za pomocą kodu. Jest to połączenie biblioteki Java do pracy z grafiką oraz zintegrowanego środowiska programistycznego (IDE), które umożliwia łatwe pisanie i uruchamianie kodu.





Istnieje wiele projektów graficznych i animacyjnych dla początkujących, które wykorzystują Przetwarzanie, ale jest również w stanie manipulować wideo na żywo.





Dzisiaj będziesz tworzyć pokaz slajdów wideo na żywo z różnymi efektami sterowanymi za pomocą myszy, korzystając z biblioteki wideo Przetwarzanie. Oprócz obracania wideo na żywo, nauczysz się zmieniać jego rozmiar i kolor oraz jak sprawić, by podążał za kursorem myszy.





Konfiguracja projektu

Na początek Pobierz Przetwarzanie i otwórz pusty szkic. Ten samouczek jest oparty na systemie Windows, ale powinien działać na każdym komputerze z kamerą internetową.

Może być konieczne zainstalowanie biblioteki Processing Video, dostępnej pod Szkic > Importuj bibliotekę > Dodaj bibliotekę . Szukaj Wideo w polu wyszukiwania i zainstaluj bibliotekę z Fundacja Przetwarzania .



Po zainstalowaniu jesteś gotowy do pracy. Jeśli chcesz pominąć kodowanie, możesz pobierz kompletny szkic . O wiele lepiej jednak zrobić to samemu od zera!

Korzystanie z kamery internetowej z przetwarzaniem

Zacznijmy od zaimportowania biblioteki i utworzenia Ustawiać funkcjonować. Wprowadź następujące dane w pustym szkicu Przetwarzanie:





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

Po zaimportowaniu biblioteki wideo tworzysz Schwytać instancja o nazwie Pomarańczowy do przechowywania danych z kamery internetowej. w Ustawiać , ten rozmiar funkcja ustawia a 640x480 okno wielkości piksela do pracy.

Następna linia przypisuje Pomarańczowy do nowej instancji Schwytać , dla ten szkic, który ma taki sam rozmiar jak okno, zanim poprosisz aparat o włączenie krzywka.start() .





Nie martw się, jeśli na razie nie rozumiesz tego wszystkiego. Krótko mówiąc, powiedzieliśmy Processing, aby utworzył okno, znalazł nasz aparat i włączył go! Aby go wyświetlić, potrzebujemy remis funkcjonować. Wpisz to poniżej powyższego kodu, poza nawiasami klamrowymi.

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

ten remis funkcja jest wywoływana w każdej klatce. Oznacza to, że wiele razy w ciągu sekundy Jeśli kamera ma dane do dyspozycji ty czytać dane z niego.

Te dane są następnie wyświetlane jako obraz , na stanowisku 0, 0 , który znajduje się w lewym górnym rogu okna.

Zapisz swój szkic i naciśnij przycisk odtwarzania u góry ekranu.

Powodzenie! Dane przechowywane przez Pomarańczowy jest prawidłowo drukowany na ekranie w każdej klatce. Jeśli masz problemy, dokładnie sprawdź swój kod. Java potrzebuje każdego nawiasu i średnika we właściwym miejscu! Przetwarzanie może również wymagać kilku sekund, aby uzyskać dostęp do kamery internetowej, więc jeśli uważasz, że nie działa, poczekaj kilka sekund po uruchomieniu skryptu.

Odwracanie obrazu

Teraz, gdy masz obraz z kamery internetowej na żywo, zmodyfikujmy go. W funkcji rysowania zamień obraz(kamera,0,0); z tymi dwoma wierszami kodu.

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

Zapisz i ponownie uruchom szkic. Czy widzisz różnicę? Używając negatywu skala wartość, wszystkie x wartości (piksele poziome) są teraz odwrócone. Z tego powodu musimy użyć ujemnej wartości okna szerokość aby prawidłowo ustawić obraz.

Odwrócenie obrazu do góry nogami wymaga tylko kilku drobnych zmian.

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

Tym razem zarówno x oraz oraz wartości są odwracane, odwracając obraz z kamery na żywo do góry nogami. Do tej pory zakodowałeś normalny obraz, obraz odwrócony w poziomie i obraz odwrócony w pionie. Ustalmy sposób na przełączanie się między nimi.

Robienie cyklu

Zamiast przepisywać kod za każdym razem, możemy używać cyfr do ich przechodzenia. Stwórz nowy liczba całkowita na górze twojego kodu o nazwie przełącznik .

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

Możemy użyć wartości przełącznika, aby określić, co dzieje się z obrazem z kamery. Kiedy zaczyna się szkic, nadajesz mu wartość 0 . Teraz możemy użyć logiki, aby zmienić to, co dzieje się z obrazem. Zaktualizuj swój remis metoda wyglądać tak:

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

Teraz wszystkie trzy warianty kodu zostaną uruchomione w zależności od wartości przełącznika. Jeśli nie pasuje do jednego z naszych Jeśli lub Jeśli inaczej oświadczenia, w przeciwnym razie klauzula zostaje zresetowana do 0. Logika jest ważną umiejętnością dla początkujących, której należy się nauczyć, a możesz dowiedzieć się o nich i wielu innych dzięki doskonałemu samouczkowi programowania YouTube !

Korzystanie z myszy

Przetwarzanie ma wbudowane metody dostępu do myszy. Aby wykryć, kiedy użytkownik kliknie myszą, dodaj myszNaciśnięta funkcja na dole skryptu.

najszybszy sposób na przesyłanie plików między komputerami
void mousePressed(){
switcher++;
}

Przetwarzanie nasłuchuje kliknięć myszą i przerywa program, aby wykonać tę metodę, gdy je wykryje. Za każdym razem, gdy metoda jest wywoływana, wartość przełącznika zwiększa się o jeden. Zapisz i uruchom swój skrypt.

Teraz, po naciśnięciu przycisku myszy, przechodzi przez różne orientacje filmów, zanim powróci do oryginału. Do tej pory po prostu przewróciłeś wideo, teraz zróbmy coś bardziej interesującego.

Dodawanie kolejnych efektów

Teraz zakodujesz czterokolorowy efekt obrazu na żywo, podobny do słynnych dzieł sztuki Andy'ego Warhola. Dodawanie kolejnych efektów jest tak proste, jak dodanie kolejnej klauzuli do logiki. Dodaj to do swojego skryptu między ostatnimi inaczej, jeśli oświadczenie i w przeciwnym razie .

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

Ten kod używa obraz funkcja tworzenia czterech oddzielnych obrazów z kamer w każdym rogu ekranu i sprawienia, że ​​wszystkie są połowiczne.

ten odcień funkcja dodaje kolor do każdego obrazu z kamery. Liczby w nawiasach czerwony, zielony i niebieski (RGB) wartości. Odcień koloruje cały następujący kod wybranym kolorem.

Zapisz i graj, aby zobaczyć wynik. Spróbuj zmienić liczby RGB w każdym odcień funkcja zmiany kolorów!

Sprawianie, że podąża za myszą

Na koniec sprawmy, aby obraz na żywo podążał za pozycją myszy, korzystając z pomocnych funkcji z biblioteki Processing. Dodaj to powyżej w przeciwnym razie część twojej logiki.

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

Tutaj ustawiasz obraz z kamery na myszX oraz mysi . Są to wbudowane wartości przetwarzania, które zwracają piksel, na który wskazuje mysz.

Otóż ​​to! Pięć odmian wideo na żywo za pomocą kodu. Jednak po uruchomieniu kodu zauważysz kilka problemów.

Dokończenie kodu

Kod, który do tej pory utworzyłeś, działa, ale zauważysz dwa problemy. Po pierwsze, gdy pojawi się czterokolorowa odmiana, wszystko później jest zabarwione na fioletowo. Po drugie, kiedy przesuwasz wideo za pomocą myszy, pozostawia ślad. Możesz to naprawić, dodając kilka linii na górze funkcji rysowania.

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

Na początku każdej klatki ten kod resetuje kolor tinty na biały i dodaje czarny kolor tła, aby zatrzymać wideo pozostawianie śladów. Teraz, gdy testujesz program, wszystko działa idealnie!

Efekty kamery internetowej: sztuka z kodu

Przetwarzanie jest bardzo wydajne i możesz go używać do wielu rzeczy. To doskonała platforma do tworzenia grafiki za pomocą kodu, ale równie dobrze nadaje się do sterowania robotami!

Jeśli Java nie jest twoją rzeczą, istnieje biblioteka JavaScript oparta na przetwarzaniu o nazwie p5.js. Jest oparty na przeglądarce i nawet początkujący mogą go używać do tworzenia fantastycznych reaktywnych animacji!

Źródło obrazu: Syda_Productions / Depositphotos

Udział Udział Ćwierkać E-mail 3 sposoby sprawdzenia, czy wiadomość e-mail jest prawdziwa czy fałszywa

Jeśli otrzymałeś wiadomość e-mail, która wygląda nieco podejrzanie, zawsze najlepiej sprawdzić jej autentyczność. Oto trzy sposoby sprawdzenia, czy wiadomość e-mail jest prawdziwa.

Czytaj dalej
Powiązane tematy
  • Programowanie
  • Jawa
  • Kamerka internetowa
  • Przetwarzanie
  • Poradniki kodowania
O autorze Ian Buckley(216 opublikowanych artykułów)

Ian Buckley jest niezależnym dziennikarzem, muzykiem, performerem i producentem wideo mieszkającym w Berlinie w Niemczech. Kiedy nie pisze ani nie występuje na scenie, majstruje przy elektronice DIY lub kodowaniu w nadziei, że zostanie szalonym naukowcem.

Więcej od Iana Buckleya

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować