Я пытаюсь сделать шифрование и дешифрование изображений с помощью ElGamal. Но я не могу получить окончательный результат в виде изображения

import cv2 
import numpy
import matplotlib
from PIL import Image
import elgamal


img = Image.open('C:/Users/hp/Desktop/QuadTree/output.jpg').convert('LA')
img.save('Grayscale.png')
img1 = cv2.imread('Grayscale.png',0)
img.show()
imgar = numpy.array(img1)
imgStr = numpy.array2string(imgar)
print(img1)
print('Image before Encryption')
keyDict = elgamal.generate_keys()
cipher = elgamal.encrypt(keyDict['publicKey'],imgStr)
print('encrypted value')
print(cipher)
decryptedImgar = elgamal.decrypt(keyDict['privateKey'], cipher)
print('Decrypted value')
print(decryptedImgar)
imgar2 = numpy.array(decryptedImgar)
print(imgar2)
print(type(imgar2))
numpy.uint(imgar2)
matplotlib.image.imsave('decimg.png', imgar2)

Сначала я преобразовал цветное изображение в изображение в градациях серого. Затем я взял каждый пиксель из изображения и попытался зашифровать его. Числовой массив преобразуется в строку для шифрования Elgamal. Во время процесса расшифровки массив строк преобразуется обратно в массив NumPy. Но при преобразовании массива numpy обратно в изображение я получил следующую ошибку. Может кто-нибудь, пожалуйста, помогите?

Traceback (последний вызов был последним): файл "C:/Users/hp/Desktop/QuadTree/elg.py", строка 26, в numpy.uint(imgar2) ValueError: недопустимый литерал для int() с основанием 10: '[[161 160 160 ... 167 146 141]\n [161 161 161 ... 165 145 140]\n [163 162 160 ... 168 145 142]\n ...\n [ 42 46 50.. 117 78 95]\n [ 40 46 52 ... 92 18 18]\n [ 40 47 54 ... 99 17 16]]'

0 ответов

Другие вопросы по тегам