处理中的ArrayIndexOutOfBoundsException = 0错误

问题描述 投票:0回答:1

我正在制作一个电影剪辑操作,使视频逐点显示但卡住了。这是代码:

import processing.video.*;

Movie video;
int pointillize = 16; 

void setup() { 
    size(640,360); 
    video = new Movie(this,"dynamic.mov");
    video.loop();
} 
void movieEvent(Movie video){
    video.read();
}
void draw() { 
    if (video.available()) { 
         video.read(); 
    } 
    loadPixels(); 
    video.loadPixels(); 
    int x = int(random(video.width)); 
    int y = int(random(video.height)); 
    int loc = x + y*video.width; 
    float r,g,b; 
    r = red (video.pixels[loc]); 
    g = green (video.pixels[loc]); 
    b = blue (video.pixels[loc]); 
    color c = color(r,g,b); 
    pixels[loc] = c; 
    fill(r,g,b,100); 
    ellipse(x,y,pointillize,pointillize); 
}

我想问题是loc。谁能告诉我如何解决这个问题?谢谢。

arrays video processing
1个回答
1
投票

您需要在加载的视频中使用相同数量的像素[loc]以及草图大小。错误告诉您数组无法匹配您请求的像素。

我在这里试了一下它的确有效,将尺寸改成大小(1920,1080);并使用1920x1080的视频来匹配它。

import processing.video.*;

Movie video;
int pointillize = 16; 

void setup() { 
    size(1920,1080); 
    video = new Movie(this,"break.mov");
    video.loop();
} 
void movieEvent(Movie video){
    video.read();
}
void draw() { 
    if (video.available()) { 
         video.read(); 
    } 
    loadPixels(); 
    video.loadPixels(); 
    int x = int(random(video.width)); 
    int y = int(random(video.height)); 
    int loc = x + y*video.width; 
    float r,g,b; 
    r = red (video.pixels[loc]); 
    g = green (video.pixels[loc]); 
    b = blue (video.pixels[loc]); 
    color c = color(r,g,b); 
    pixels[loc] = c; 
    fill(r,g,b,100); 
    ellipse(x,y,pointillize,pointillize); 
}
© www.soinside.com 2019 - 2024. All rights reserved.