将图像数组转换为2d数组,进行处理

时间:2016-04-26 16:31:38

标签: arrays image processing

有人可以帮助我吗?我在编程方面有点新意但是正在处理并且需要创建一个将两个数组合并为一个并将它们精确显示在同一位置的程序图?因此它循环通过一个数组,就像23个图像,然后是另一个数组,即8个图像。 到目前为止我有这个:

 
PImage[][] mEyes1 = new PImage[23][8];
// PImage[] mEyes2 = new PImage[8];

void setup() {
  size(620, 400); 
  // fullScreen();
  frameRate(60);
  smooth();

  for (int i = 0; i < mEyes1.length; i++) 
    for (int j = 0; j < mEyes1.length; j++) {
      PImage img = loadImage(i + "h.jpg");
      PImage img1 = loadImage(j + "j.jpg");

      // r
      mEyes1[i][j] = img.get(130, 170, 310, 100); 
      mEyes1[i][j] = img1.get(130, 170, 310, 100); //Get a portion of the loaded image with displaying it

      int idy = (int)map(mouseY, 0, 2*width, 0.0, mEyes1[i].length -1);
      int idx = (int)map(mouseX, 0, 2*width, 0.0, mEyes1[j].length -1);

      image(mEyes1[idx][idy], 0, 0, mEyes1[idx][idy].width, mEyes1[idx][idy].height -1);
      // image(mEyes1[idy][idx], 0, 0, mEyes1[idy][idx].width, mEyes1[idy][idx].height -1);

      println(idx,idy);
    }
}

void draw() {
}

我知道它看起来不对,但我希望在它通过前23后在同一位置显示一系列图像?

谢谢!

1 个答案:

答案 0 :(得分:0)

看看这一行:

 
PImage[][] mEyes1 = new PImage[23][8];

这是创建一个2D数组,它是一个数组数组。换句话说,您将创建23个长度为8的数组,总共184(23 * 8)个索引。我认为这不是你想做的事。

相反,听起来你只想创建一个包含31(23 + 8)个索引的数组:

PImage[] mEyes1 = new PImage[31];

然后你可以使用两个for循环遍历你的图像文件并将它们添加到数组中:

for(int i = 0; i < hImageCount; i++){
  PImage img = loadImage(i + "h.jpg");
  mEyes1[i] = img;
}

for(int j = 0; j < jImageCount; j++){
  PImage img1 = loadImage(j + "j.jpg");
  mEyes1[hImageCount+j] = img1;
}