作者 主题: 为什么在第二窗口显示2个覆盖的CAMERA会出现闪烁的效果, 而主窗口却不会.  (阅读 2498 次)

hyigo

  • Newbie
  • *
  • Thank You
  • -Given: 1
  • -Receive: 0
  • 帖子: 4
大家好, 我在打算用主窗口显示的camera事件, 同时可以在第二个窗口显示.  可是在第二个窗口当两个camera覆盖是会出现闪烁的情况.  这是我的CODE, 希望大神指路.  顺祝!

程序代码: [选择]
import processing.video.*; 
import java.awt.Frame;
 
 
////////////////////////
PFrame f;
SecondApplet s;
////////////////////////
 
 
 
Capture cam1;   //camera 1 of present window
Capture cam2;   //camera 2 of present window
Capture Scam1;  //camera 1 of 2nd window
Capture Scam2;  //camera 2 of 2nd window
 
 
 
 
void setup(){
 
 
  size(600,600);
  PFrame f = new PFrame();
 
 
 
 String[] cameras = Capture.list();
 
  if (cameras == null) {
    println("Failed to retrieve the list of available cameras, will try the default...");
    cam1 = new Capture(this, 720, 576);
    cam2 = new Capture(this, 720, 576);
     Scam1 = new Capture(this, 720, 576);
    Scam2 = new Capture(this, 720, 576);
 
  } if (cameras.length == 0) {
    println("There are no cameras available for capture.");
    exit();
  } else {
    println("Available cameras:");
    for (int i = 0; i < cameras.length; i++) {
      println(cameras[i]);
    }
 
    // The camera can be initialized directly using an element
    // from the array returned by list():
    cam1 = new Capture(this, cameras[3]);
    cam2 = new Capture(this, cameras[3]);
    Scam1 = new Capture(this, cameras[3]);
    Scam2 = new Capture(this, cameras[3]);
 
 
    // Start capturing the images from the camera
    cam1.start();
    cam2.start();
    Scam1.start();
    Scam2.start();
 
  }
 
 
 
}
 
 
void draw(){
 
 
  if ((cam1.available() == true)) {
    cam1.read();
 
    cam2.read();
 
    Scam1.read();
 
    Scam2.read();
 
  }
    image(cam1, 0,0,300,300 ); 
    image(cam2, 150,150, 300,300 );
 
 
    s.image(Scam1, 0,0,300,300 );
    s.image(Scam2, 50,50, 300,300 );
 
 
 
}
 
 
public class PFrame extends Frame {
 
  public PFrame() {
 
    setBounds(0, 0, 600, 600);
    s = new SecondApplet();
    add(s);
    s.init();
    show();
 
  }
 
}
 
 
/////////////////////////Second Windows//////////////////////////////
/////////////////////////Second Windows//////////////////////////////
 
 
public class SecondApplet extends PApplet {
 
 
 
  public void setup() {
 
  }
 
 
  public void draw() {
 
  }
 
}

RavenKwok

  • Sr. Member
  • ****
  • Thank You
  • -Given: 23
  • -Receive: 36
  • 帖子: 277
  • Artist/ Animator/ Coder/ Cynical Asshole
在SecondApplet 类内建立一个PImage 对象。每次把主窗口的cam 包含的像素数据更新给这个PImage 对象。https://processing.org/reference/copy_.html

hyigo

  • Newbie
  • *
  • Thank You
  • -Given: 1
  • -Receive: 0
  • 帖子: 4
在SecondApplet 类内建立一个PImage 对象。每次把主窗口的cam 包含的像素数据更新给这个PImage 对象。https://processing.org/reference/copy_.html

Hi, raven. 我还是比较新手, 你说的像素数据更新 是不是要做updatePixels(); ? 我知道如何在SecondApplet下建PImage, 可以对于你后面那段话不是很明白.  :-\ :-\ :-\

程序代码: [选择]
public class SecondApplet extends PApplet {
 
 PImage img;

  public void setup() {

  }

  public void draw() {

  }
 
}

RavenKwok

  • Sr. Member
  • ****
  • Thank You
  • -Given: 23
  • -Receive: 36
  • 帖子: 277
  • Artist/ Animator/ Coder/ Cynical Asshole
程序代码: [选择]
class SecondApplet extends PApplet {

  int w, h;
  PImage camDup;

  SecondApplet(int w, int h) {
    this.w = w;
    this.h = h;
    camDup = createImage(w, h, RGB);
  }

  void setup() {
    size(w, h, P3D);
  }

  void draw() {
    image(camDup, 0, 0);
  }
 
  void update(Capture cam){
    camDup.copy(cam, 0, 0, cam.width, cam.height, 0, 0, w, h);
  }
}

这样应该就明朗了,其实算是基本帮你写掉了。。。 :-\

hyigo

  • Newbie
  • *
  • Thank You
  • -Given: 1
  • -Receive: 0
  • 帖子: 4
程序代码: [选择]
class SecondApplet extends PApplet {

  int w, h;
  PImage camDup;

  SecondApplet(int w, int h) {
    this.w = w;
    this.h = h;
    camDup = createImage(w, h, RGB);
  }

  void setup() {
    size(w, h, P3D);
  }

  void draw() {
    image(camDup, 0, 0);
  }
 
  void update(Capture cam){
    camDup.copy(cam, 0, 0, cam.width, cam.height, 0, 0, w, h);
  }
}

这样应该就明朗了,其实算是基本帮你写掉了。。。 :-\

感谢 raven,  的确是帮我写了, 我是特别新的新手, 而且问过你好多问题了.   可是我还想再问下, 这个SecondApplet是新建立的方法么? 那他的名字和class是不是重复了? 

RavenKwok

  • Sr. Member
  • ****
  • Thank You
  • -Given: 23
  • -Receive: 36
  • 帖子: 277
  • Artist/ Animator/ Coder/ Cynical Asshole
类的构造函数。

恩,大致了解你的基础了,建议你循序渐进,可以先看一下官网关于OOP 的教程。https://processing.org/tutorials/objects/

hyigo

  • Newbie
  • *
  • Thank You
  • -Given: 1
  • -Receive: 0
  • 帖子: 4
类的构造函数。

恩,大致了解你的基础了,建议你循序渐进,可以先看一下官网关于OOP 的教程。https://processing.org/tutorials/objects/

谢谢 raven的建议!!!

Tags:
 


Back to top