Pygameで画像処理9

グレースケールの改良版です。
 
人の目は緑に最も良く反応し、続いて赤、青という反応をします。
 
よって、このように重みをかけると、
自然なグレースケールになるわけです。
 

import pygame
import math

_gSrc = None

def main():
	pygame.init()
	pygame.display.set_mode((250, 250), 0, 32)
	pygame.display.set_caption("グレースケール2")
	_gScr = pygame.display.get_surface()
	tBuf = pygame.image.load("nyan.bmp").convert()

	for j in range(tBuf.get_height()):
		for i in range(tBuf.get_width()):
			rgba = tBuf.get_at((i, j))
			gray = (
				rgba[0] * 0.299   # r
				+ rgba[1] * 0.587 # g
				+ rgba[2] * 0.114 # b
				) / 3
			tBuf.set_at((i, j), (gray, gray, gray, 255))
	while True:
		_gScr.blit(tBuf, (0, 0), tBuf.get_rect())
		pygame.display.update()
		for e in pygame.event.get():
			if e.type == pygame.QUIT: return
		pygame.time.wait(10)

if __name__ == '__main__':
	main()