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