2016-10-02 3 views
1

Мне нужно сохранить матрицу как изображение, так что после обратного чтения исходные и восстановленные матрицы будут одинаковыми. У меня есть код:Сохраните матрицу как изображение без изменений после восстановления

import scipy.misc 


def get_matrix(N, M): 
    import random 
    matrix = [[ random.randint(1, 100) for j in range(M) ] for i in range(N)] 
    return matrix 

def equal(matA, matB): 
    if len(matA) != len(matB): 
     return False 
    if (len(matA[0]) != len(matB[0])): 
     return False 
    for i in range(len(matA)): 
     for j in range(len(matA[i])): 
      if matA[i][j] != matB[i][j]: 
       return False 
    return True 

init_matrix = get_matrix(10, 10) 
scipy.misc.imsave('matrix.jpg', init_matrix) 
recovered_matrix = scipy.misc.imread('matrix.jpg') 
assert equal(init_matrix, recovered_matrix) 

но после прочтения изображения с диска матрицы не равны. Как это исправить?

+1

Вы можете напечатать первое значение, которое не равно? Может быть, проблема с точностью, если это плавающие? –

ответ

2

Если вы хотите использовать matplotlib или scikit-image, эти библиотеки имеют встроенную функциональность для того, что вы хотите. В противном случае взгляните на пакет imageio.

Смежные вопросы