[英]How to convert pixels to gray scale?
好吧,我正在使用Processing
,它允許我以int[]
訪問任何圖像的像素。 我現在想要做的是將圖像轉換為灰度。 每個像素的結構如下所示:
...........PIXEL............
[red | green | blue | alpha]
<-8--><--8---><--8--><--8-->
現在,我需要將哪些轉換應用於單個RGB值以使圖像成為灰度?
我的意思是,我添加/減少多少使圖像灰度化?
我在這里找到了一些方法: http : //www.johndcook.com/blog/2009/08/24/algorithms-convert-color-grayscale/
對於每個像素,紅色,綠色和藍色通道的值應為其平均值。 像這樣:
int red = pixel.R;
int green = pixel.G;
int blue = pixel.B;
pixel.R = pixel.G = pixel.B = (red + green + blue) / 3;
因為在你的情況下像素顏色似乎存儲在一個數組而不是屬性中,你的代碼最終可能看起來像:
int red = pixel[0];
int green = pixel[1];
int blue = pixel[2];
pixel[0] = pixel[1] = pixel[2] = (red + green + blue) / 3;
一般的想法是,當你有一個灰度圖像時,每個像素的顏色僅測量該點的光強度 - 我們感知的方式是每個顏色通道的強度平均值。
以下代碼加載圖像並循環顯示其像素 ,將飽和度更改為零並保持相同的色調和亮度值。
PImage img;
void setup () {
colorMode(HSB, 100);
img = loadImage ("img.png");
size(img.width,img.height);
color sat = color (0,0,0);
img.loadPixels();
for (int i = 0; i < width * height; i++) {
img.pixels[i]=color (hue(img.pixels[i]), sat, brightness(img.pixels[i]));
}
img.updatePixels();
image(img,0,0);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.