Algoritmo de escala de cinza
Publicado por Renato Alencar (última atualização em 20/06/2014)
[ Hits: 6.718 ]
Download escala-de-cinza.tar.gz
Algoritmo de escala de cinza baseado na luminosidade do pixel pela visão humana.
#!/usr/bin/python # -*- coding: utf-8 -*- # Algoritmo de escala de cinza. # # O algoritmo se baseia na luminosidade de cada # pixel, pela formula: # L = R*0.3 + B*0.59 + G*0.11 # Dado o resultado o algoritmo salva o pixel na forma # LLL. # # Primeiro convertemos a imagem em JPEG para PPM (formato # simples e sem compressão, sendo mais fácil a manipulação), # então obtemos um buffer dos pixels, na classe Image. # import image import sys import os if len(sys.argv) != 3: print 'Uso: %s IMAGEM-ENTRADA IMAGEM-SAIDA' % sys.argv[0] sys.exit(1) fn = sys.argv[1] out = sys.argv[2] # Converte para PPM os.system('jpegtopnm "%s" > /tmp/%d.ppm' % (fn, os.getpid())) # Carrega a imagem img = image.Image() img.loadPPM('/tmp/%d.ppm' % os.getpid()) # Converte cada pixel em um pixel cinza baseado em sua luminosidade for i in range(img.width): for j in range(img.height): pix = image.Pix(img.getPixel(i, j)) lum = int(pix[0]*0.3 + pix[1]*0.59 + pix[2]*0.11) img.setPixel(i, j, image.Pix((lum, lum, lum))) # Salva a imagem img.savePPM('/tmp/%d.ppm' % os.getpid()) # Converte de volta os.system('ppmtojpeg /tmp/%d.ppm > "%s"' % (os.getpid(), out)) os.remove('/tmp/%d.ppm' % os.getpid())
Implementação simples de um programa antivírus em Python 3.10 para Linux
Script em Python com várias funções matemáticas [iniciante]
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
É normal não gostar de KDE? (6)
Impressora epson l6270 não funciona em Linux mint (0)
esqueci a senha do boot do notebook dell vostro 3300 (3)