Em vários casos, pode ser necessário converter as imagens coloridas em tons de cinza ou preto e branco, como no processamento de imagens etc. Portanto, neste artigo, você aprenderá como converter uma imagem em tons de cinza usando C#. Além disso, o artigo abordará a escala de cinza e a binarização das imagens explicitamente.
- API C# para converter imagens em escala de cinza
- Converter imagens em escala de cinza em C#
- Converter imagens em preto e branco com binarização
- Obtenha uma licença de API gratuita
API C# para converter imagem em escala de cinza
Para converter imagens de cores RGB em escala de cinza, usaremos Aspose.Imaging for .NET. É uma poderosa API de processamento de imagem que permite manipular formatos de imagem populares sem problemas. Você pode baixar a API ou instalá-la usando NuGet.
PM> Install-Package Aspose.Imaging
Converter uma imagem em escala de cinza em C#
A seguir estão as etapas para converter uma imagem colorida em escala de cinza em C#.
- Primeiro, carregue a imagem usando a classe Image.
- Converta a imagem em um objeto RasterCachedImage.
- Armazene a imagem em cache usando o método RasterCachedImage.CacheData().
- Converta a imagem em escala de cinza usando o método RasterCachedImage.Grayscale().
- Finalmente, salve a imagem usando o método RasterCachedImage.Save(String).
O exemplo de código a seguir mostra como converter uma imagem em escala de cinza usando C#.
// Carregar uma imagem em uma instância da classe Image
using (Image image = Image.Load("aspose.jpg"))
{
// Transmita a imagem para RasterCachedImage e verifique se a imagem está armazenada em cache
RasterCachedImage rasterCachedImage = (RasterCachedImage)image;
if (!rasterCachedImage.IsCached)
{
// Cache de imagem se ainda não estiver em cache
rasterCachedImage.CacheData();
}
// Transforme a imagem em sua representação em escala de cinza
rasterCachedImage.Grayscale();
// Salve a imagem
rasterCachedImage.Save("grayscaled.jpg");
}
Imagem de entrada
Segue-se uma imagem de exemplo utilizada neste artigo.
Convertido para escala de cinza
A seguir está a imagem após a conversão para escala de cinza.
Converter imagem em preto e branco com binarização
Na binarização, cada pixel em uma imagem pode ter apenas dois valores possíveis; 0 ou 1. Aqui, 0 denota a ausência e 1 denota a presença da cor. Aspose.Imaging suporta dois métodos de binarização, ou seja, binarização com limite fixo e binarização com limite Otsu.
Binarização com limite fixo em C#
A seguir estão as etapas para realizar a binarização em uma imagem usando um limite fixo.
- Primeiro, carregue a imagem usando a classe Image.
- Transmita a imagem em um objeto RasterCachedImage.
- Armazene a imagem em cache usando o método RasterCachedImage.CacheData().
- Converta a imagem em preto e branco usando o método RasterCachedImage.BinarizeFixed().
- Finalmente, salve a imagem usando o método RasterCachedImage.Save(String).
O código C# a seguir aplica a binarização a uma imagem e a converte em preto e branco.
// Carregar uma imagem em uma instância da classe Image
using (Image image = Image.Load("aspose.jpg"))
{
// Transmita a imagem para RasterCachedImage e verifique se a imagem está armazenada em cache
RasterCachedImage rasterCachedImage = (RasterCachedImage)image;
if (!rasterCachedImage.IsCached)
{
// Cache de imagem se ainda não estiver em cache
rasterCachedImage.CacheData();
}
// Transforme a imagem em sua representação binária
rasterCachedImage.BinarizeFixed(100);
// Salve a imagem
rasterCachedImage.Save("black and white.jpg");
}
Binarização com Otsu Threshold em C#
A seguir estão as etapas para converter uma imagem em preto e branco com limite Otsu.
- Primeiro, carregue a imagem usando a classe Image.
- Transmita a imagem em um objeto RasterCachedImage.
- Armazene a imagem em cache usando o método RasterCachedImage.CacheData().
- Converta a imagem em preto e branco usando o método RasterCachedImage.BinarizeOtsu().
- Finalmente, salve a imagem usando o método RasterCachedImage.Save(String).
O exemplo de código a seguir mostra como converter uma imagem em preto e branco com limite Otsu usando C#.
// Carregar uma imagem em uma instância da classe Image
using (Image image = Image.Load("aspose.jpg"))
{
// Transmita a imagem para RasterCachedImage e verifique se a imagem está armazenada em cache
RasterCachedImage rasterCachedImage = (RasterCachedImage)image;
if (!rasterCachedImage.IsCached)
{
// Cache de imagem se ainda não estiver em cache
rasterCachedImage.CacheData();
}
// Transforme a imagem em sua representação binária
rasterCachedImage.BinarizeOtsu();
// Salve a imagem
rasterCachedImage.Save("black and white.jpg");
}
Obtenha uma licença de API gratuita
Você pode obter uma licença temporária gratuita para usar a API sem limitações de avaliação.
Conclusão
Neste artigo, você aprendeu como converter uma imagem em escala de cinza e preto e branco usando C#. Além disso, você viu como aplicar a binarização às imagens com limite fixo ou Otsu. Além disso, você pode explorar mais sobre a API de processamento de imagem C# usando documentação. Além disso, você pode compartilhar suas dúvidas conosco por meio do nosso fórum.