当前位置: 首页 > 知识库问答 >
问题:

用p5.js获得像素亮度

蒲功
2023-03-14

我试图从图像中获取像素数据,以计算图像的平均亮度。我用img访问数据没有问题。loadPixels()但是由于某些原因,像素阵列的某些元素是未定义的,这破坏了我的计算。

下面是sketch.js的代码:

var img;
var brightness;
var inc;
var gotBright = false;

function preload(){
   img = loadImage('assets/2.png');
}

function setup(){
   createCanvas(500, 500);
   background(0);

}

function draw(){

   img.resize(10, 10);
   image(img, 0, 0, img.width, img.height);

   brightness = 0;
   inc = 0;

   if (gotBright == false) {

      img.loadPixels();
      loadPixels();
      for (var i = 0; i < img.width; i++) {
         for (var j = 0; j < img.height; j++) {
            var index = (i * j * img.width) * 4;
            var r = img.pixels[index + 0];
            var g = img.pixels[index + 1];
            var b = img.pixels[index + 2];

            brightness += (r + g + b) / 3;
            inc ++;
            console.log(inc, r , g, b);
         }
      }
      gotBright = true;
      brightness = brightness/inc;
   }
}

亮度应该等于0到255之间的某个数字,但现在它是NaN。。。

如果你对计算图像平均亮度的其他方法有什么建议,我很高兴听到:)谢谢!

共有2个答案

璩和璧
2023-03-14

鲍尔的答案是正确的。你需要确保你的像素索引是正确的。最好的方法是拿出一张图表,画出一些例子。

或者您可以使用get()函数,它接受一个x和一个y参数。

var myImage;
var c;

function preload() {
  myImage = loadImage("assets/rockies.jpg");
}

function setup() {
  background(myImage);
  noStroke();
  c = myImage.get(60, 90);
  fill(c);
  rect(25, 25, 50, 50);
}
梁嘉澍
2023-03-14

我认为你的指数计算错了。不应该是:

var指数=(i j*img.width)*4

 类似资料:
  • p5.js是一套具有类似Processing编程语言的可视化JavaScript库,是当代Web的Processing,能够比得上甚至优于D3.js、EaselJS、Three.js、 Rapha&euml;l、 KineticJS、Paper.js、Famo.us,或者是Impact等类库。 p5.js有完整的一套画图功能,既可当作画图软件使用,也包括支持与各类页面元素交互的库。然而,开发者没有

  • 本文向大家介绍p5.js绘制创意自画像,包括了p5.js绘制创意自画像的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了p5.js绘制自画像的具体代码,供大家参考,具体内容如下 绘制结果 人物头上的呆毛会一直运动,鼠标出现在画面上时左上角会有一个小猫咪头随着鼠标移动,而且人物的眼睛也会一直看向小猫的方向 代码介绍 整个图全部由贝塞尔曲线,直线和圆组成 贝塞尔曲线的代码结构大概就是 控制

  • Devel-IPerl Installation Dependencies Devel::IPerl depends upon the ZeroMQ library (ZMQ) and Project Jupyter in order to work. ZeroMQ Debian On Debian-based systems, you can install ZeroMQ using apt.

  • 问题内容: 我正在尝试从位图获取像素rgb值。我得到了一些价值,但远没有达到我期望的价值。我也得到: 我找不到界外错误… 这是代码: 问题答案: 这个: 与此不符: 你已经计数的行和列,即包含 ÿ 值和包含 X 的值。那是倒退。

  • 实际上我想对每个像素做一些计算,为此我需要显式地访问每个像素。 如有任何帮助或建议,我们将不胜感激。

  • 我有一些盒子里面有图像。我想让它做的是,如果图像高度小于其内部的div-boxs高度,则向图像添加一个类。 但是我已经用css将图像设置为div框的100%宽度,所以当我使用jquery时。在图像上,它给出了原始尺寸。有什么建议吗? ID为imgProjekt1和ImgProjekt2的文本从codebehind生成一个普通的img标记。