【Processing笔记】N0.7

加载视频

import processing.video.*;
Movie m;

void setup()
{
  size(800,600);
  m =new Movie(this,"time.mov");
  m.loop();
  
}

void draw()
{
  background(0);
  
  image(m,0,0,width,height);
}

void movieEvent(Movie m)
{
  m.read();
}

将要加载的视频放到工程目录下的data文件中,引入import processing.video.*;库
movieEvent()这个方法会伴随draw()循环运行在后台读取视频。
image(img,a,b)
image(img,a,b,c,d)

img是要显示的图像,a是图像的x坐标,b是图像的y坐标,c是显示图像的宽度,d是显示图像的高度。


读取摄像头

import processing.video.*;

Capture cam;

void setup()
{
  size(640,480);
  
  String [] cameras =Capture.list();
  
  for(int i =0;i<cameras.length;i++)
  {
    println(i+": "+cameras[i]);
  }
  
  cam=new Capture(this,cameras[1]);
  cam.start();
}

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

导入import processing.video.*;库
cam.avaliable()==true它是用于判断摄像头状态的cam.read()是读取摄像头数据用的。
image.(cam,0,0)会把摄像头画面显示出来

在这里插入图片描述


调整摄像头影像的尺寸
image(cam,-0,0,800,640);只能调整画布的尺寸并不能改变分辨率。
在这里插入图片描述
可以根据在控制台的信息选择合适的分辨率,若是不知道摄像头的信息可以通过println打印出来。
println(cam.width+" "+cam.height)


获取颜色信息

int backgroundCol =color(255,0,0);
void setup()
{
  size(400,400);
}

void draw()
{
  background(backgroundCol);
  
  float r =red(backgroundCol);
  float b =blue(backgroundCol);
  float g =green(backgroundCol);
  
  println("red:"+r+",blue:"+b+",green:"+g);
}

读写像素点

import processing.video.*;

Capture cam;

void setup()
{
  size(640,480);
  
  String [] cameras =Capture.list();
  
  for(int i =0;i<cameras.length;i++)
  {
    println(i+": "+cameras[i]);
  }
  
  cam = new Capture(this,cameras[1]);
  cam.start();

}

void draw()
{
  if(cam.available()==true)
  {
    cam.read();
  }
  
  cam.loadPixels();
  
  int totalPixels =cam.width*cam.height;
  println(totalPixels);
  
  for(int i =0;i<totalPixels;i+=15)
  {
    color pixelCol =cam.pixels[i];
    stroke(pixelCol);
    int x =i % cam.width;
    
    int y= i / cam.width;
    point(x,y);
  }
  
  //image(cam,0,0,640,480);
}

cam.pixels[]数组包含了摄像头画面的所有像素。通过加载一个个像素点才呈现摄像头画面。
在这里插入图片描述


视频输出像素点风格

import processing.video.*;

Capture cam;

void setup()
{
  size(640,480);
  
  String [] cameras =Capture.list();
  
  for(int i =0;i<cameras.length;i++)
  {
    println(i+": "+cameras[i]);
  }
  
  cam = new Capture(this,cameras[0]);
  cam.start();

}

void draw()
{
  if(cam.available()==true)
  {
    cam.read();
  }
  
  cam.loadPixels();
  
int pixelSize =20;
for( int y=0;y<cam.height;y+=pixelSize)
{
  for(int x=0;x<cam.width;x+=pixelSize)
  {
    int camPixelPos =y*cam.width+x;
    
    color pixCol =cam.pixels[camPixelPos];
    
    fill(pixCol);
    rect(x,y,pixelSize,pixelSize);
  }
}
}

在这里插入图片描述


像素块风格

import processing.video.*;

Capture cam;

void setup()
{
  size(1024,768,P3D);
  
  String [] cameras =Capture.list();
  
  for(int i =0;i<cameras.length;i++)
  {
    println(i+": "+cameras[i]);
  }
  
  cam = new Capture(this,cameras[1]);
  cam.start();

}

void draw()
{
  background(0);
  if(cam.available()==true)
  {
    cam.read();
  }
  
  cam.loadPixels();
  
int pixelSize =20;
float sizeMult=1.5;
for( int y=0;y<cam.height;y+=pixelSize)
{
  for(int x=0;x<cam.width;x+=pixelSize)
  {
    int camPixelPos =y*cam.width+x;
    
    color pixCol =cam.pixels[camPixelPos];
    float pixBrightness =255-brightness(pixCol);
    
   fill(pixCol);
   
   pushMatrix();
   translate(x*sizeMult,y*sizeMult,pixBrightness);
   box(pixBrightness*0.1);
   popMatrix();
   
  /* pushMatrix();
   translate(x*sizeMult,y*sizeMult,0);
   sphere(pixBrightness*0.1);
   popMatrix();
   */
  }
}
}

在这里插入图片描述


视频替代摄像头画面

import processing.video.*;

Movie m;
void setup()
{
  size(640,480,P3D);
  
  m =new Movie(this,"boom.mov");
  
  m.loop();

}

void draw()
{
  background(0);
  m.loadPixels();
  
int pixelSize =10;
float sizeMult=1.5;
for( int y=0;y<m.height;y+=pixelSize)
{
  for(int x=0;x<m.width;x+=pixelSize)
  {
    int camPixelPos =y*m.width+x;
    
    color pixCol =m.pixels[camPixelPos];
    float pixBrightness =255-brightness(pixCol);
    
   fill(pixCol);
   
   pushMatrix();
   translate(x*sizeMult,y*sizeMult,pixBrightness);
   box(pixBrightness*0.1);
   popMatrix();
  }
}
}

void movieEvent(Movie m)
{
  m.read();
}

在这里插入图片描述


发布了28 篇原创文章 · 获赞 3 · 访问量 902

猜你喜欢

转载自blog.csdn.net/wangpuqing1997/article/details/104937909