Разве этот код не должен сделать всю картинку черной?

1

В p5.js, я пытаюсь обрабатывать каждый пиксель изображения для личного проекта, поэтому я думал, что начну медленно, и попробую сделать каждый пиксель черным. По какой-то причине экран просто остается белым, и я понятия не имею, почему пиксели не обновляются. Здесь код:

var Canvas;
var srcImg;
var defaultImg = "http://i.imgur.com/ARg0OOy.jpg";

function preload() {
srcImg = loadImage(defaultImg);
}

function setup () {
  createCanvas(srcImg.width,srcImg.height);
  noLoop();
}

function draw() {
  srcImg.loadPixels();
  for (var x = 0; x < srcImg.width; x++) {
    for (var y = 0; y < srcImg.height; y++) {
      var loc = x + y*srcImg.width;
      srcImg.pixels[loc] = color(224,29,29);
    }
  }
  console.log(loc);
  console.log(srcImg.width);
  console.log(srcImg.height);
  console.log(srcImg.width * srcImg.height);
  srcImg.updatePixels();
  //image(srcImg, 0,0,srcImg.width, srcImg.height);
}

Кроме того, если я раскомментирую последнюю строку, я вижу исходное изображение, и оно отключено сверху (и оно не превратило каждый пиксель в черный цвет). Вы можете сами увидеть здесь. Любые мысли о том, почему это происходит?

Редактирование: я попытался сделать даже один ряд пикселей ярким красным цветом, и причина, по которой я получаю белый экран, - это то, что независимо от того, какой цвет я устанавливаю пикселями, они становятся белыми... Кроме того, когда я пытался сделать весь ряд этого красного цвета, он остановился примерно на 1/4 пути, как показано здесь (и все еще белый). Я не знаю, почему это происходит.

Теги:
image-processing
image
p5.js

1 ответ

3
Лучший ответ

Вы делаете все пиксели черными, но затем вы рисуете srcImage поверх этих черных пикселей. Итак, все, что вы видите, это srcImage.

Попробуйте прокомментировать image(srcImg, 0,0,srcImg.width, srcImg.height); чтобы увидеть черные пиксели.

  • 0
    Хм, но не будет ли updatePixels() перезаписывать исходный srcImg , делая его черным? В любом случае, я попытался закомментировать это, и теперь на экране ничего не появляется.
  • 0
    @AlexHutman Зачем updatePixels() перезаписывать исходный srcImage ? И ничто не является именно тем, что должно появиться на экране - вы рисуете только черные пиксели.
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню