Algoritmo de escala de cinza
Publicado por Renato Alencar (última atualização em 20/06/2014)
[ Hits: 6.841 ]
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())
Jogo da forca criado em Python
Virus, trojan, sei la o que é isso
PYCalculator 1.0 - Calculadora no Python
Jode de acertar a palavra embaralhada
Nenhum comentário foi encontrado.
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Gentoo binário em 2026: UEFI, LUKS, Btrfs e Systemd
Trabalhando Nativamente com Logs no Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Gentoo: Trocando wpa_supplicant pelo iwd no NetworkManager (Systemd)
Necessário autenticar ao imprimir - Ubuntu X Windowns (0)
O que houve com slackware ??? (10)
O Free Download Manager não abre no Fedora 43 KDE Plasma (2)









