Cách tạo hiệu ứng Webcam tuyệt vời bằng cách sử dụng Java và xử lý

Cách tạo hiệu ứng Webcam tuyệt vời bằng cách sử dụng Java và xử lý

Xử lý là một công cụ mạnh mẽ cho phép tạo ra nghệ thuật thông qua mã. Nó là sự kết hợp của một thư viện Java để làm việc với đồ họa và một môi trường phát triển tích hợp (IDE) cho phép bạn viết và chạy mã một cách dễ dàng.





Có nhiều dự án đồ họa và hoạt hình dành cho người mới bắt đầu sử dụng Xử lý, nhưng nó cũng có khả năng xử lý video trực tiếp.





Hôm nay, bạn sẽ tạo trình chiếu video trực tiếp với các hiệu ứng khác nhau được điều khiển bằng chuột, sử dụng thư viện Video xử lý. Cũng như lật video trực tiếp, bạn sẽ học cách thay đổi kích thước và màu sắc cũng như cách làm cho video di chuyển theo con trỏ chuột.





Thiết lập dự án

Để bắt đầu, tải xuống Xử lý và mở một bản phác thảo trống. Hướng dẫn này dựa trên hệ thống Windows, nhưng nó sẽ hoạt động trên bất kỳ máy tính nào có webcam.

Bạn có thể cần cài đặt thư viện Video Xử lý, có thể truy cập trong Phác thảo> Nhập Thư viện> Thêm Thư viện . Tìm kiếm Băng hình trong hộp tìm kiếm và cài đặt thư viện từ Nền tảng chế biến .



Sau khi cài đặt, bạn đã sẵn sàng để sử dụng. Nếu bạn muốn bỏ qua mã, bạn có thể tải xuống bản phác thảo hoàn chỉnh . Tuy nhiên, tốt hơn là bạn nên tự làm từ đầu!

Sử dụng Webcam có xử lý

Hãy bắt đầu bằng cách nhập thư viện và tạo cài đặt hàm số. Nhập thông tin sau vào bản phác thảo Xử lý trống:





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

Sau khi nhập thư viện video, bạn tạo Chiếm lấy trường hợp được gọi là cam để lưu trữ dữ liệu từ webcam. Trong cài đặt , NS kích thước chức năng thiết lập một 640x480 cửa sổ có kích thước pixel để làm việc.

Dòng tiếp theo chỉ định cam đến một phiên bản mới của Chiếm lấy , vì cái này sketch, có cùng kích thước với cửa sổ, trước khi yêu cầu máy ảnh bật cam.start () .





Đừng lo lắng nếu bạn không hiểu mọi phần của điều này ngay bây giờ. Tóm lại, chúng tôi đã yêu cầu Xử lý tạo một cửa sổ, tìm máy ảnh của chúng tôi và bật nó lên! Để hiển thị nó, chúng tôi cần một vẽ hàm số. Nhập mã này bên dưới mã ở trên, bên ngoài dấu ngoặc nhọn.

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

Các vẽ hàm được gọi là mọi khung. Điều này có nghĩa là nhiều lần mỗi giây, nếu như máy ảnh có dữ liệu có sẵn bạn đọc dữ liệu từ nó.

Dữ liệu này sau đó được hiển thị dưới dạng hình ảnh , tại vị trí 0, 0 , là phía trên bên trái của cửa sổ.

Lưu bản phác thảo của bạn và nhấn nút phát ở đầu màn hình.

Sự thành công! Dữ liệu được lưu trữ bởi cam được in chính xác ra màn hình mọi khung hình. Nếu bạn đang gặp sự cố, hãy kiểm tra kỹ mã của bạn. Java cần mọi dấu ngoặc và dấu chấm phẩy ở đúng vị trí! Quá trình xử lý cũng có thể yêu cầu vài giây để truy cập webcam, vì vậy nếu bạn cho rằng nó không hoạt động, hãy đợi vài giây sau khi khởi chạy tập lệnh.

Lật hình

Bây giờ bạn đã có một hình ảnh webcam trực tiếp, hãy thao tác với nó. Trong hàm vẽ, thay thế hình ảnh (cam, 0,0); với hai dòng mã này.

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

Lưu và chạy lại bản phác thảo. Bạn có thể thấy sự khác biệt? Bằng cách sử dụng một phủ định tỉ lệ giá trị, tất cả NS các giá trị (pixel ngang) hiện đã được đảo ngược. Bởi vì điều này, chúng ta cần sử dụng giá trị âm của cửa sổ chiều rộng để định vị hình ảnh một cách chính xác.

Lật ngược hình ảnh chỉ cần một vài thay đổi nhỏ.

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

Lần này, cả hai NS các giá trị bị lật, làm lộn ngược hình ảnh camera trực tiếp. Cho đến nay bạn đã mã hóa một hình ảnh bình thường, một hình ảnh lật ngang và một hình ảnh lật dọc. Hãy thiết lập một cách để luân chuyển giữa chúng.

Làm cho nó theo chu kỳ

Thay vì viết lại mã của bạn mỗi lần, chúng tôi có thể sử dụng các số để chuyển qua chúng. Tạo một cái mới số nguyên ở đầu mã của bạn được gọi là người chuyển đổi .

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

Chúng ta có thể sử dụng giá trị của bộ chuyển đổi để xác định điều gì sẽ xảy ra với hình ảnh camera. Khi bản phác thảo bắt đầu, bạn cung cấp cho nó một giá trị là 0 . Bây giờ chúng ta có thể sử dụng logic để thay đổi những gì xảy ra với hình ảnh. Cập nhật của bạn vẽ phương pháp trông như thế này:

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

Bây giờ, cả ba biến thể của mã sẽ kích hoạt tùy thuộc vào giá trị của trình chuyển đổi. Nếu nó không khớp với một trong những nếu như hoặc nếu khác tuyên bố, khác mệnh đề được đặt lại thành 0. Logic là một kỹ năng quan trọng dành cho người mới bắt đầu cần học và bạn có thể tìm hiểu về chúng và nhiều hơn thế nữa với Hướng dẫn lập trình tuyệt vời trên YouTube!

Sử dụng chuột

Quá trình xử lý có các phương thức tích hợp để truy cập chuột. Để phát hiện khi người dùng nhấp chuột, hãy thêm mousePressed ở cuối tập lệnh của bạn.

cách đọc ổ đĩa mac trên windows
void mousePressed(){
switcher++;
}

Quá trình xử lý sẽ lắng nghe bất kỳ cú nhấp chuột nào và ngắt chương trình để thực hiện phương pháp này khi nó phát hiện ra. Mỗi khi phương thức được gọi, giá trị của bộ chuyển đổi sẽ lớn hơn một. Lưu và chạy tập lệnh của bạn.

Bây giờ, khi bạn nhấn nút chuột, nó sẽ chuyển động qua các hướng khác nhau của video, trước khi quay lại bản gốc. Cho đến nay bạn chỉ mới lật video, bây giờ chúng ta hãy làm điều gì đó thú vị hơn một chút.

Thêm các hiệu ứng khác

Bây giờ, bạn sẽ viết mã hiệu ứng hình ảnh trực tiếp bốn màu tương tự như các tác phẩm nghệ thuật nổi tiếng của Andy Warhol. Việc thêm nhiều hiệu ứng cũng đơn giản như thêm một mệnh đề khác vào logic. Thêm cái này vào tập lệnh của bạn giữa cái cuối cùng khác nếu tuyên bố, và khác .

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

Mã này sử dụng hình ảnh chức năng tạo bốn hình ảnh camera riêng biệt ở mỗi góc của màn hình và làm cho tất cả chúng có kích thước bằng một nửa.

Các màu chức năng thêm màu sắc cho mỗi hình ảnh camera. Các số trong ngoặc là đỏ, lục và lam (RGB) các giá trị. Tô màu tất cả các mã sau với màu đã chọn.

Lưu và chơi để xem kết quả. Hãy thử thay đổi các số RGB trong mỗi màu chức năng thay đổi màu sắc!

Làm cho nó theo dõi chuột

Cuối cùng, hãy làm cho hình ảnh trực tiếp theo vị trí chuột bằng cách sử dụng các chức năng hữu ích từ thư viện Xử lý. Thêm cái này bên trên khác một phần logic của bạn.

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

Ở đây, bạn đang định vị hình ảnh từ máy ảnh của mình tại mouseXchuộtY . Các giá trị này được tích hợp trong các giá trị Xử lý trả về pixel nào con chuột đang trỏ vào.

Đó là nó! Năm biến thể của video trực tiếp thông qua mã. Tuy nhiên, khi bạn chạy mã, bạn sẽ nhận thấy một vài vấn đề.

Hoàn thiện mã

Mã bạn đã tạo cho đến nay vẫn hoạt động, nhưng bạn sẽ nhận thấy hai vấn đề. Đầu tiên, một khi biến thể bốn màu hiển thị, mọi thứ sau đó sẽ có màu tím. Thứ hai, khi bạn di chuyển video bằng chuột, nó sẽ để lại một dấu vết. Bạn có thể sửa nó bằng cách thêm một vài dòng vào đầu của hàm vẽ.

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

Ở đầu mỗi khung hình, mã này đặt lại màu sắc thành màu trắng và thêm màu nền là màu đen để ngăn video để lại dấu vết. Bây giờ khi bạn kiểm tra chương trình, mọi thứ hoạt động hoàn hảo!

Hiệu ứng webcame: Nghệ thuật từ mã

Quá trình xử lý rất mạnh mẽ và bạn có thể sử dụng nó để làm nhiều việc. Đó là một nền tảng tuyệt vời để làm nghệ thuật với mã, nhưng nó cũng phù hợp không kém để điều khiển robot!

Nếu Java không phải là thứ của bạn, có một thư viện JavaScript dựa trên Xử lý được gọi là p5.js. Nó dựa trên trình duyệt và ngay cả những người mới bắt đầu cũng có thể sử dụng nó để tạo ra các hình ảnh động phản ứng tuyệt vời!

Tín dụng hình ảnh: Syda_Productiontions / Tiền gửi

Đăng lại Đăng lại tiếng riu ríu E-mail 3 cách để kiểm tra xem một email là thật hay giả

Nếu bạn nhận được một email có vẻ hơi khó hiểu, tốt nhất bạn nên kiểm tra tính xác thực của nó. Dưới đây là ba cách để biết một email có phải là thật hay không.

Đọc tiếp
Chủ đề liên quan
  • Lập trình
  • Java
  • Webcam
  • Xử lý
  • Hướng dẫn viết mã
Giới thiệu về tác giả Ian Buckley(216 bài báo đã xuất bản)

Ian Buckley là một nhà báo tự do, nhạc sĩ, nghệ sĩ biểu diễn và nhà sản xuất video sống ở Berlin, Đức. Khi không viết hay trên sân khấu, anh ấy sẽ mày mò với các thiết bị điện tử hoặc mã tự làm với hy vọng trở thành một nhà khoa học điên rồ.

Xem thêm từ Ian Buckley

Theo dõi bản tin của chúng tôi

Tham gia bản tin của chúng tôi để biết các mẹo công nghệ, đánh giá, sách điện tử miễn phí và các ưu đãi độc quyền!

Bấm vào đây để đăng ký