Processing 在处理过程中仅按红色值过滤

Processing 在处理过程中仅按红色值过滤,processing,Processing,我正在尝试制作一个程序,在处理3.x时使用我的网络摄像头,从图像中过滤绿色和蓝色,并显示红色、黑色或白色。我已经尝试了两种我认为应该有效的方法,但我肯定错过了一些东西,因为当我切换到红色模式时,我的整个屏幕都变黑了 尝试1: for(int y=0;y img.pixels[c]=img.pixels[c]&0xFF0000

我正在尝试制作一个程序,在处理3.x时使用我的网络摄像头,从图像中过滤绿色和蓝色,并显示红色、黑色或白色。我已经尝试了两种我认为应该有效的方法,但我肯定错过了一些东西,因为当我切换到红色模式时,我的整个屏幕都变黑了

尝试1:

for(int y=0;y
尝试2:

//inputImage是我屏幕上类型为PImage的图像。
对于(int c=0;c

两次尝试都导致了黑屏。

尝试2是一种更清晰的方法,所以我将解决这个问题

在写入
pixels[]
数组之前,需要在
inputImage
上调用
loadPixels()
,最后调用
updatePixels()
应用写入更改

您也在
c
(循环索引)上调用了
red()
,而不是在
img.pixels[c]

结果

inputImage.loadPixels();
for (int c = 0; c < inputImage.pixels.length; c++) {
    img.pixels[c] = color(red(img.pixels[c]), 0, 0);
}
inputImage.updatePixels();
inputImage.loadPixels();
对于(int c=0;c

如果您需要代码更快,请考虑使用此位掩码设置没有2个方法调用的颜色(到代码>颜色()/代码>和<代码>红色()/代码>:< /p>

img.pixels[c]=img.pixels[c]&0xFF0000