那裏... 我有一些關於使用java的圖像處理作業的問題。我的問題: 如何在java編程中獲得rgb圖像的每個像素的灰度值?如何獲得java中的圖像的每個像素的灰度級
我只知道一點關於如何通過語法image.getRGB(x,y)獲得rgb值的每個像素以返回rgb值。我不知道的人,讓灰度值的圖像的每個像素....
感謝提前
那裏... 我有一些關於使用java的圖像處理作業的問題。我的問題: 如何在java編程中獲得rgb圖像的每個像素的灰度值?如何獲得java中的圖像的每個像素的灰度級
我只知道一點關於如何通過語法image.getRGB(x,y)獲得rgb值的每個像素以返回rgb值。我不知道的人,讓灰度值的圖像的每個像素....
感謝提前
首先,您需要從你得到的每個像素中提取的紅色,綠色和藍色值從image.getRGB(x, y)
。關於這個請看this answer。然後閱讀有關converting color to grayscale。
您也可以設置類型爲TYPE_BYTE_GRAY的BufferedImage,並將圖片繪製到其中,然後獲取柵格數據並查找值。
我同意上一個答案。像BufferedImage一樣創建BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_BYTE_GRAY)。從我所瞭解的光柵讀取像素數據和寫入像素數據或更新像素的可寫光柵。我總是使用可寫光柵,儘管這可能不是最好的方法,因爲您可以讀取像素數據並設置像素值。您可以通過WritableRaster獲取柵格raster = image.getRaster();然後你可以通過使用raster.getSample(x,y,0)來獲得一個像素的值;在參數的0是你想要得到這爲灰度圖像應該是0
補充丹尼爾的回答樂隊:
WritableRaster wr = myBufferedImage.getRaster();
for(int i = 0; i < myBufferedImage.getWidth(); i++){
for(int j = 0; j < myBufferedImage.getHeight(); j++){
int grayLevelPixel = wr.getSample(i, j, 0);
wr.setSample(i, j, 0, grayLevelPixel); // Setting same gray level, will do nothing on the image, just to show how.
}
}