1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
import string
import copy
class Image:
""" Représente une image."""
def __init__(self, w, h):
self.width = w
self.height = h
size = self.width * self.height
for i in range(0, size - 1):
self.data.append(255)
def __init__(self, fileName):
self.readPGM(fileName)
def getId(self, i, j):
return (self.width*i + j)
def setPixel(self, i, j, val):
self.data[self.getId(i,j)] = val
def getPixel(self, i, j):
return self.data[self.getId(i,j)]
def writeToPGM(self, fileName):
f = open(fileName,'w')
f.write("P2\n")
f.write("# Created with Python !\n")
f.write(str(self.width) + " " + str(self.height) + "\n")
f.write("256\n")
size = self.width * self.height
for i in range(0, size - 1):
f.write(str(self.data[i]) + "\n")
f.close()
def readPGM(self, fileName):
f = open(fileName, 'r')
f.readline() # Le magic number
f.readline() # Les commentaires
line = f.readline() # Les dimensions de l'image
l = string.split(line)
self.width = int(l[0])
self.height = int(l[1])
line = f.readline()
# Les données
size = self.width * self.height
self.data = []
for i in range(0, size - 1):
line = f.readline()
self.data.append(int(line))
f.close()
def lissage(self):
res = copy.deepcopy(self)
for j in range(1, self.height-2):
for i in range(1, self.width-2):
val = self.getPixel(i,j) + self.getPixel(i+1,j) + self.getPixel(i-1,j) +\
self.getPixel(i,j+1) + self.getPixel(i,j-1) + self.getPixel(i+1,j+1) +\
self.getPixel(i+1,j-1) + self.getPixel(i-1,j+1) + self.getPixel(i-1,j-1)
res.setPixel(i,j,val/9)
print "Self : ", self.getPixel(109,100), ", Res : ", res.getPixel(109,100)
self = copy.deepcopy(res)
print "Self : ", self.getPixel(109,100), ", Res2 : ", res.getPixel(109,100)
self.writeToPGM("moyenne1.pgm") |
Partager