java缓冲图像:检测黑色像素

Posted

技术标签:

【中文标题】java缓冲图像:检测黑色像素【英文标题】:java Buffered Image : Detecting black pixels 【发布时间】:2010-08-22 00:58:52 【问题描述】:

我有这个简单的代码来处理一个 24 位彩色 windows bmp 文件

BufferedImage mapa = BMPDecoder.read(new File("maps/map.bmp"));
    
final int xmin = mapa.getMinX();
final int ymin = mapa.getMinY();
    
final int ymax = ymin + mapa.getHeight();
final int xmax = xmin + mapa.getWidth();


for (int i = xmin;i<xmax;i++)

   for (int j = ymin;j<ymax;j++)
   
                
    int pixel = mapa.getRGB(i, j);
        
    if (pixel == 0)
    
        System.out.println("black at "+i+","+j);
    
   

但是,在对全黑图像进行测试时,我在像素处得到这个值:-16777216

我希望得到一个 0x0。

我如何测试黑色像素(或任何其他颜色)?

更新

我正在针对((pixel &amp; 0xff) == 0) 进行测试。这是正确的吗? 提前致谢。

【问题讨论】:

【参考方案1】:

-16777216 是十六进制的0xFF000000,对应不透明的黑色。

附录:查看您的更新,我认为您希望 ((pixel &amp; 0x00FFFFFF) == 0) 作为您的谓词。

【讨论】:

以上是关于java缓冲图像:检测黑色像素的主要内容,如果未能解决你的问题,请参考以下文章

Opencv在图像上绘制黑色像素

检查灰度图像中的像素是不是为黑色(OpenCV)

在 OpenCV python 中将白色像素转换为黑色

将灰度图像中的像素转换为黑色(OpenCV)会导致意外结果?

Java 图像识别 数字图像处理 从一张JPG图片中识别出若干黑色小方块

如何在PIL中选择与图像边缘相邻的所有黑色像素?