在各种情况下,您可能需要将 RGB 图像转换为灰度或黑白图像,例如在图像处理等方面。据此,在本文中,您将学习如何使用 Java 将 RGB 图像转换为灰度.此外,本文将明确介绍图像的灰度化和二值化。
Java 彩色图像转灰度转换器 - 免费下载
为了将 RGB 图像转换为灰度图像,我们将使用 Aspose.Imaging for Java。它是一个 Java 图像处理 API,可让您无缝处理流行的图像格式。您可以 下载 API 或使用以下 Maven 配置安装它。
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-imaging-java</artifactId>
<version>21.7</version>
<classifier>jdk16</classifier>
</dependency>
在 Java 中将 RGB 图像转换为灰度
以下是在 Java 中将 RGB 图像转换为灰度的步骤。
- 首先,使用 Image 类加载图像。
- 然后,将图像投射到 RasterCachedImage 对象中。
- 使用 RasterCachedImage.cacheData() 方法缓存图像。
- 使用 RasterCachedImage.grayscale() 方法将图像转换为灰度。
- 最后,使用 RasterCachedImage.save(String) 方法保存图像。
以下代码示例展示了如何在 Java 中将图像转换为灰度。
// 在 Image 的实例中加载图像
try (Image image = Image.load("aspose-logo.jpg"))
{
// 将图像投射到 RasterCachedImage
RasterCachedImage rasterCachedImage = (RasterCachedImage) image;
// 检查图像是否被缓存
if (!rasterCachedImage.isCached()) {
// 如果尚未缓存,则缓存图像
rasterCachedImage.cacheData();
}
// 将图像转换为其灰度表示
rasterCachedImage.grayscale();
// 保存生成的图像
rasterCachedImage.save("Grayscaling_out.jpg");
}
输入图像
以下是本文中使用的示例图像。
转换为灰度
下面是转换为灰度后的图像。
Java使用二值化将图像保存为黑白
在二值化中,图像中的每个像素只能有两个可能的值; 0 或 1。这里,0 表示不存在,1 表示存在颜色。 Aspose.Imaging 支持两种二值化方法,即固定二值化和 Otsu 阈值二值化。
具有固定阈值的二值化
以下是使用固定阈值对图像执行二值化的步骤。
- 首先,使用 Image 类加载图像。
- 然后,将图像投射到 RasterCachedImage 对象中。
- 使用 RasterCachedImage.cacheData() 方法缓存图像。
- 使用 RasterCachedImage.binarizeFixed() 方法将图像转换为黑白。
- 最后,使用 RasterCachedImage.save(String) 方法保存图像。
以下 Java 代码将二值化应用于图像并将其转换为黑白。
// 在 Image 的实例中加载图像
try (Image image = Image.load("aspose-logo.jpg"))
{
// 将图像投射到 RasterCachedImage 并检查图像是否被缓存
RasterCachedImage rasterCachedImage = (RasterCachedImage)image;
if (!rasterCachedImage.IsCached)
{
// 如果尚未缓存,则缓存图像
rasterCachedImage.CacheData();
}
// 使用预定义的固定阈值对图像进行二值化并保存结果图像
rasterCachedImage.binarizeFixed((byte) 100);
rasterCachedImage.save("BinarizationWithFixedThreshold_out.jpg");
}
使用 Otsu 阈值进行二值化
以下是使用 Otsu 阈值将图像转换为黑白的步骤。
- 首先,使用 Image 类加载图像。
- 将图像投射到 RasterCachedImage 对象中。
- 使用 RasterCachedImage.cacheData() 方法缓存图像。
- 使用 RasterCachedImage.binarizeOtsu() 方法将图像转换为黑白。
- 最后,使用 RasterCachedImage.save(String) 方法保存图像。
以下代码示例显示了如何使用 Java 将图像转换为具有 Otsu 阈值的黑白图像。
// 在 Image 的实例中加载图像
try (Image image = Image.load("aspose-logo.jpg"))
{
// 将图像投射到 RasterCachedImage 并检查图像是否被缓存
RasterCachedImage rasterCachedImage = (RasterCachedImage) image;
if (!rasterCachedImage.isCached())
{
// 如果尚未缓存,则缓存图像
rasterCachedImage.cacheData();
}
// 使用 Otsu Thresholding 对图像进行二值化
rasterCachedImage.binarizeOtsu();
// 保存生成的图像
rasterCachedImage.save("BinarizationWithOtsuThreshold_out.jpg");
}
彩色图像到灰度 Java 转换器 - 获得免费许可证
您可以 获得免费的临时许可证 以便在没有评估限制的情况下使用 API。
结论
在本文中,您学习了如何使用 Java 将彩色图像转换为灰度和黑白。此外,您还了解了如何对具有固定阈值或 Otsu 阈值的图像应用二值化。此外,您可以使用 文档 探索有关 Java 图像处理 API 的更多信息。此外,您可以通过我们的 论坛 与我们分享您的疑问。