2022-04-24
在测试程序时,如果提示没有库的话,就需要下载之。

参考:processing关于处理视频的教程。
https://blog.csdn.net/zd623949282/article/details/107346574
这还是代码本色作者的功劳。
- 基本的例子:
//步骤 1.导入视频库。
import processing.video.*;
//步骤 2.声明捕获对象。
Capture video;
//步骤 5.当有新图像可用时,从相机读取!
void captureEvent(Capture video) {
video.read();
}
void setup() {
size(320, 240);
// 步骤 3.初始化捕获对象。
video = new Capture(this, 320, 240);
//步骤 4.开始捕获过程。
video.start();
}
//步骤 6.显示图像。
void draw() {
image(video, 0, 0);//参数是指左上角位置。
}

- 可以用 PImage 做任何事情 (调整大小、着色、移动等)。)
你可以用捕获对象做。只要您从该对象中读取 (),视频图像将在您操作时更新。
- 可以用 PImage 做任何事情 (调整大小、着色、移动等)。)
import processing.video.*;
Capture video;
void setup() {
size(320, 240);
video = new Capture(this, 320, 240);
video.start();
}
void captureEvent(Capture video) {
video.read();
}
void draw() {
background(255);
tint(mouseX, mouseY, 255);
translate(width/2, height/2);
imageMode(CENTER);
rotate(PI/4);
image(video, 0, 0, mouseX, mouseY);
}

- 可以用处理像素的方式来显示。这个很有修改。可以更自由地处理了。
//步骤 1。导入视频库
import processing.video.*;
//步骤 2。声明捕获对象
Capture video;
void setup() {
size(320, 240);
//步骤 3.通过构造函数初始化捕获对象
video = new Capture(this, 320, 240);
video.start();
}
// 新帧可用时的事件
void captureEvent(Capture video) {
// 步骤 4.从相机读取图像。
video.read();
}
void draw() {
loadPixels();
video.loadPixels();
for (int x = 0; x < video.width; x++) {
for (int y = 0; y < video.height; y++) {
// 从 2D 网格计算 1D 位置
int loc = x + y * video.width;
// 从像素中获取红色,绿色,蓝色值
float r = red (video.pixels[loc]);
float g = green(video.pixels[loc]);
float b = blue (video.pixels[loc]);
//计算基于接近鼠标来改变亮度的数量
float d = dist(x, y, mouseX, mouseY);
float adjustbrightness = map(d, 0, 100, 4, 0);
r *= adjustbrightness;
g *= adjustbrightness;
b *= adjustbrightness;
// 约束 RGB 以确保它们在 0-255 颜色范围内
r = constrain(r, 0, 255);
g = constrain(g, 0, 255);
b = constrain(b, 0, 255);
// 创建新颜色并在窗口中设置像素
color c = color(r, g, b);
pixels[loc] = c;
}
}
updatePixels();
}

网友评论