-1

有没有简单的方法可以通过java从图像中删除色键?我尝试阅读有关 openCV 的信息,这很难学习和使用。

4

1 回答 1

0

最简单的解决方案是逐个像素地进行操作。为此,您需要一个带有 Alpha 通道的图像。传递给宽度和高度之后TYPE_INT_ARGB的构造函数。BufferedImage

然后在两个嵌套for循环中复制每个像素到新图像,如下所示:

BufferedImage newImg = new BufferedImage(origImg.getWidth(), origImg.getHeight(), BufferedImage.TYPE_INT_ARGB);
Color background = new Color(0,0,0,0); //RGBA
for (int x = 0; x < origImg.getWidth(); x++) {          
   for (int y=0; y < origImg.getHeight(); y++) {
      Color newColor = new Color(origImg.getRGB(x, y) | 0xff000000, true);

      if(/*check for chromakey color*/)
        newImg.setRGB(x, y, background.getRGB())
      else
        newImg.setRGB(x, y, newColor.getRGB());            
   }      
}

这假设您在原始图像中没有 alpha 分量,因为它将被|0xff000000255 覆盖。

于 2020-02-04T22:16:56.763 回答