【问题标题】:Video with alpha channel in Processing处理中带有 Alpha 通道的视频
【发布时间】:2016-03-17 03:47:25
【问题描述】:

我想知道是否有人可以出色地帮助我完成我在Processing 中的工作。我需要在实时提要上播放带有透明胶片的视频文件,这样视频就不仅仅是一个矩形。这是我认为需要添加或更改的代码部分。我对这一切都非常陌生,我非常感谢任何可以提供帮助的人。

【问题讨论】:

  • 你能提供一个MCVE吗?其中哪一部分给您带来了麻烦?
  • 我用我认为的 MCVE 编辑了这个问题。如果电影文件具有 Alpha 通道,则无法播放(常规电影文件播放正常),我真的需要让电影文件的背景透明。感谢您的回复。
  • @KevinWorkman 嗨,这段代码可以制作透明胶片吗?

标签: processing alpha


【解决方案1】:

如果您的视频有 Alpha 通道,那就太好了, 否则,你应该可以blend()其他内容。

这是概念草图的基本证明。它在实时提要的顶部覆盖了一个圆圈网格。使用空格键循环混合模式。根据您的内容和您想要实现的目标,有些会比其他的效果更好:

import processing.video.*;

Capture cam;
int w = 320;
int h = 240;
int np = w*h;

PImage overlay;

int blendMode = 1;
int[] blendModes = {BLEND,ADD,SUBTRACT,DARKEST,LIGHTEST,DIFFERENCE,EXCLUSION,MULTIPLY,SCREEN,OVERLAY,HARD_LIGHT,SOFT_LIGHT,DODGE,BURN};
String[] blendModesNames = {"BLEND","ADD","SUBTRACT","DARKEST","LIGHTEST","DIFFERENCE","EXCLUSION","MULTIPLY","SCREEN","OVERLAY","HARD_LIGHT","SOFT_LIGHT","DODGE","BURN"};

void setup(){
  size(w,h);
  cam = new Capture(this,w,h);
  cam.start();

  //test content to overlay, a grid of circles
  background(0);fill(255);
  for(int y = 0 ; y < height; y += 30)
    for(int x = 0 ; x < width; x+= 30)
      ellipse(x,y,15,15);
  overlay = get();
}
void draw(){
  image(cam,0,0);
  blend(overlay,0,0,width,height,0,0,width,height,blendModes[blendMode]);
}
void keyReleased(){
  if(key == ' ') {
    blendMode = (blendMode+1)%blendModes.length;
    println("blendMode: " + blendModesNames[blendMode]);
  }
}
void captureEvent(Capture c){
  c.read();
}

【讨论】:

  • 请告诉我如何播放 Alpha 通道视频。 HERE
【解决方案2】:

我通过使用 2 个视频解决了(也许可以改进):第一个镜头是背景为白色的彩色地图;第二个镜头是哑光蒙版:“重要”部分为白色,其他部分为黑色。然后应用 mask() 函数,下面是代码的重要部分:

Movie mov1;
Movie mov2;
void setup() { 
....code...
 mov1 = new Movie(this, "matte.mov");
 mov2 = new Movie(this, "alpha.mov");
 mov1.play();   
 mov1.pause();   
 mov2.play();   
 mov2.pause();
 }
 void draw() {
 ...code...
 mov1.play();
 mov2.play();
 loadPixels();   
 mov2.mask(mov1);
 image(mov2, 0, 0);
 }

用于测试的视频是 256x256,我总是使用两个数字的幂来获得更好的性能(浮点数学)。希望这对某人有帮助!

【讨论】:

    猜你喜欢
    • 2011-08-19
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2018-02-23
    • 1970-01-01
    • 2010-10-30
    相关资源
    最近更新 更多