cours_progra/03nov/main.py
2022-11-03 16:27:48 +01:00

74 lines
2.2 KiB
Python

from umage import load, save, show_image
def grayscale(img_mat):
"""Transform an image into gray
:img_mat: image en entree
:returns: grayscale de limage em entree
"""
new_matrix = list()
for row in range(len(img_mat)):
new_matrix.append(list())
for column in img_mat[row]:
_r, _g, _b = column
gray = round(0.2125 * _r + 0.7154 * _g + 0.0721 * _b)
new_matrix[row].append((gray, gray, gray))
return new_matrix
def convolution(img_mat, mat):
"""effectue le passage d'une matrice de convolution sur une image grise
TODO: image de couleurs
:img_mat: image en entree
:mat: matrice de convolution
:returns: image retouchee
"""
new_matrix = list()
for row in range(len(img_mat)):
new_matrix.append(list())
for column in range(len(img_mat[row])):
# _gray = img_mat[row][column][0]
_sum = 0
for mat_row in range(len(mat)):
for mat_column in range(len(mat[mat_row])):
diff_row = mat_row - len(mat)//2
diff_col = mat_column - len(mat[mat_column])//2
if dans_image(img_mat, row+diff_row, column+ diff_col):
_sum += mat[mat_row][mat_column] * img_mat[row + diff_row][column + diff_col][0]
new_matrix[row].append((_sum, _sum, _sum))
return new_matrix
def dans_image(img_mat, row, col):
if row < len(img_mat)-1 and row > 0 and col < len(img_mat[0])-1 and col > 0:
return True
return False
if __name__ == "__main__":
unit = [
[0, 1, 0],
[0, 0, 0],
[0, 0, 0]]
convolution1 = [
[-1, -1, -1],
[-1, 8, -1],
[-1, -1, -1]]
convolution2 = [
[-1, -1, -1],
[-1, 9, -1],
[-1, -1, -1]]
convolution3 = [
[-2, 0, 0],
[ 0, 1, 0],
[ 0, 0, 2]]
img = load('./myimg.jpg')
new_image = grayscale(img)
convolution(new_image, convolution2)
save(new_image, 'gray')
save(convolution(new_image, convolution1), 'convo1')
save(convolution(new_image, convolution2), 'convo2')
save(convolution(new_image, convolution3), 'convo3')