Цветное изображение в python - PullRequest
0 голосов
/ 21 апреля 2020

Когда я пытаюсь зашифровать черно-белые изображения, все в порядке, но как только я начинаю делать это с цветом, возникает ошибка, выходящая за пределы массива. В чем может быть проблема? В чем разница между цветными и черно-белыми изображениями, кто знает?

import cv2
from math import sin,pi,floor
import numpy as np
from time import time
def chirikov(x):
    height,width=len(x),len(x[0])
    n=height
    K=10000000 #this parameter acts as the key.
    newarray=np.zeros((height,width))
    newarray[0][0]=x[0][0]
    for i in range(height):
        for j in range(width):
            if (i+j)!=0:
                xnew=(i-1+j-1)%n
                ynew=(floor(j-1+K*sin(2*pi*xnew/n)))%n
                newarray[xnew][ynew]=x[i][j]
    for i in range(height):
        for j in range(width):
            x[i][j]=newarray[i][j]
    return x

def chirikovdec(x): #the decryption function
    height,width=len(x),len(x[0])
    n=height
    K=10000000#this parameter has to be equal 
    newarray=np.zeros((height,width))
    newarray[0][0]=x[0][0]
    for i in range(height):
        for j in range(width):
            if (i+j)!=0:
                xnew=(floor(i-j+K*sin(2*pi*(i)/n)))%n
                ynew=(floor(j-K*sin(2*pi*(i)/n)))%n
                newarray[xnew][ynew]=x[i][j]
    for i in range(height):
        for j in range(width):
            x[i][j]=newarray[i][j]
    return x

if __name__=="__main__":
    x=cv2.imread("test.jpg",0)
#x=cv2.imread("test.jpg",1)
#0 - Black White picture
#1 - colored picture
    x=chirikov(x)
  #  x=chirikovdec(x) 
   cv2.imwrite("output_Chaos.jpg",x)
    #cv2.imwrite("output_Chaos_decrypted.jpg",x)
    #cv2.imwrite("Output",x)

...