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

重新绘制处理中当前像素周围的选定像素区域

王豪
2023-03-14

我是新来的。我正在尝试更改颜色(或其他参数,如色调、饱和度…)每个像素周围的像素。

我没有得到任何改变,而是得到了想要的结果。求求你,帮帮任何人(

PImage imgg;
void setup() {
    size(250,166);  
    imgg = loadImage("input.jpg");
    loadPixels();
    image(imgg,0,0);
}

void draw() {
    for (int i = 0; i < imgg.width; i++) {
        for (int j = 0; j < imgg.height; j++) {
           //get the brightness value of the current pixel
           int Bright_coeff = int(brightness(pixels[j*imgg.width+i]));
           //calculate the area around the current pixel
           int Bright_dist = Bright_coeff/10  ;
           //area around that pixel will update its color
           for (int x = 0; x < imgg.width; x++ ){
              for (int y = 0; y < imgg.height; y++){
                  //check if the distance between iterating pixels and current pixel from above cycle is less than Bright_dist
                  if ( dist(x, y, i, j)<Bright_dist ){
                      color qwerty = color(random(1,255),random(1,255),random(1,255)) ;
                      pixels[y*imgg.width+x] = qwerty;
                      updatePixels();
                  }else {
                      updatePixels();
                  }
               }
            }    
        }
    }
}

共有1个答案

越俊艾
2023-03-14

loadPixels()加载当前显示窗口的像素数据
loadPixels必须在通过image()将图像绘制到窗口后完成:

PImage imgg;
void setup() {
    size(128,128);  
    imgg = loadImage("input.jpg");

    image(imgg,0,0);
    loadPixels();
}

执行draw()后,显示屏只更新一次updatePixels()设置显示窗口的像素数据。在draw()的末尾这样做一次就足够了。

void draw() {

    // [...]

    updatePixels();
}
 类似资料:
  • > 我有一张NxM大小的原始图像(FigureB-它是原始图像的蓝色香奈儿),从这张图像中我选择一个特定的区域来研究(NewfigureB),大小120x170; 然后我将这个区域划分为我所说的宏像素,即10x10的数据点(像素)阵列; 我然后在所选区域上涂上掩膜,只选择符合一定发光条件的点; 到目前为止,这是我想出来的。如有任何帮助,将不胜感激。 多谢

  • 假设我有一个像素化的图像……我想用处理来重画它。 起初应该有一个随机的彩色像素网格——过了一段时间,像素化的图像会通过这个像素化的网格出现。 我想我可以用这样的系统来处理这个问题:如果一个特定的随机颜色的像素与像素化图像的颜色相匹配,那么应该会有一个新的像素被绘制出来。 为了更好地理解,请看一下这段代码: 所以我能够在颜色匹配的情况下绘制像素——但是因为彩色噪声是随机绑定的——它们会再次消失……我

  • 我的窗口(SWT)中有以下UI布局: null null 如果我删除它,那么闪烁和重复的调用就消失了,但是我仍然不能显示任何大于5x5的图像,它们根本不会显示。 这是怎么回事..?我应该切换到GridLayout吗?我基本上只想显示两个组,每个组将包含一个字段/画布的垂直列表。

  • 我正在研究图像加密和解密算法。我想使图像像素失真。我想要得到每一个像素值,然后按我想要的方式排序这些像素值,这样图像的像素被扭曲,图像被改变。我是在朝仪式的方向走吗?有什么提示吗?或者可以帮助我的示例算法。 我有一个像素的图像。表示图像由像素组成。如果我选择图像的第一个像素行,它是像素,我将这些像素转换为二进制,然后转换为十进制。现在我得到10个像素的十进制值。我按我想要的方式对这些值进行排序。现

  • 我使用的是OpenJDK 11: openjdk版本“11.0.1”2018-10-16 openjdk运行时环境18.9(构建11.0.1+13) openjdk 64位服务器VM 18.9(构建11.0.1+13,混合模式) 试图让一个应用程序在JPanel中绘制一些东西,我注意到一些恼人的不准确之处。 然而,当精确度真的很重要时,如何使它像素级完美呢?

  • 现在,我们知道如何访问图像数据,包括图像或视频的每一个像素的RGBA,下一步我们探索一下处理像素的可能性。本节,通过反转每个像素的颜色,来实现图像的反色处理。 图3-7 图像反色 警告:由于getImageData()方法的安全限制,本节的例子必须在Web服务器上运行。 绘制步骤 按照以下步骤,实现图像的反色处理: 1. 定义画布上下文: window.onload = function(){