从int图像获取RGB值(Java)

时间:2013-10-29 17:27:43

标签: java image-processing

我正在尝试计算灰度图像的区域,我知道如果它是缓冲图像我可以使用getRGB(),但我使用的是工具包,因此它是一个int图像。我只是想问一下如何获得像素值?我在下面加了我的代码

import iptoolkit.*;

public class FindArea {

public static void main(String[] args) {

    String imageDir = "C:/Users/John/Dropbox/finalYear/Project/Leaves/";
    MainWindow mw = new MainWindow();
    int area = 0;

    IntImage src = new IntImage(imageDir + "bg7.jpg", 256, 256);
    src.displayImage(); //displays the image in a window

    for (int row = 0; row <= src.getRows(); row++)
    {
        for (int col=0; col <= src.getCols(); col++)
        {
            //if(src.pixels[row][col] >= 0)
                area++;
        }
    }
    System.out.print("The area of the leaf is:" +area);     
}

2 个答案:

答案 0 :(得分:0)

我相信要记住RGB值中的位是这样排序的: 8位R | 8位G | 8位B 但它还取决于您使用的图像类型。 使用一些位运算符,如shift&lt;&lt;和&gt;&gt;并使用和运算符&amp;。

屏蔽该值

答案 1 :(得分:0)

int  pixel = src.pixels[row][col];
int  red = (pixel & 0x00ff0000) >> 16;
int  green = (pixel & 0x0000ff00) >> 8;
int  blue = pixel & 0x000000ff;
// and the Java Color is ...
Color color = new Color(red,green,blue);

基于this的BufferedImage,但原理相同。